AcWing 19. 二叉树的下一个节点
原题链接
中等
作者:
Sky_
,
2019-12-03 11:02:18
,
所有人可见
,
阅读 1136
C++ 代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* struct TreeNode *father;
* };
*/
struct TreeNode* inorderSuccessor(struct TreeNode* p) {
if(p->right) //有右孩子
{
p = p->right;
while(p->left) p = p->left; //右子树的最左儿子
return p;
}
else if(p->father) //没有右孩子,则回溯父节点
{
if(p == p->father->right) return p->right; //右子树适用,返回null
if(p->father->right) return p->father; //左子树适用,返回父节点
}
}