面试题 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
}