面试题 04.06. 后继者
题目描述:
题解:
直接进行
中序遍历(左,根,右)
,按照中序遍历的顺序,依次加入到切片中,然后遍历这个切片去对比p
即可:
func inorderSuccessor(root *TreeNode, p *TreeNode) *TreeNode { ans:=make([]TreeNode,0) ans = ldr(root,&ans) for i := 0; i < len(ans)-1; i++ { if ans[i].Val==p.Val { return &ans[i+1] } } return nil } func ldr(node *TreeNode,ans *[]TreeNode) []TreeNode { if node==nil { return nil } ldr(node.Left,ans) *ans = append(*ans, *node) ldr(node.Right,ans) return *ans }
提交结果: