Go语言实现:【剑指offer】二叉搜索树与双向链表
该题目来源于牛客网《剑指offer》专题。
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
Go语言实现:
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
var leftLast *TreeNode
//递归
func convert(root *TreeNode) *TreeNode{
if root == nil {
return nil
}
if root.Left == nil && root.Right == nil {
leftLast = root
return root
}
//左子树
left := convert(root.Left)
if left != nil {
leftLast.Right = root
root.Left = leftLast
}
leftLast = root
//右子树
right := convert(root.Right)
if right != nil {
right.Left = root
root.Right = right
}
//?
if left != nil {
return left
} else {
return root
}
}