给定二叉树和其中某一节点,找出该节点在中序遍历序列的下一个节点
未命名文件.png思路:
1.如果该节点有右子树,它的后继节点是右子树中的最左节点
- 如果没有右子树,那么由此向上找,如果某个节点的左孩子等于该节点,那么就返回该父节点。
TreeNode* getNext(TreeNode* pNode)
{
if(pNode == NULL)return NULL;
if(pNode->right)
{
while(pNode->left) // 一路向左
pNode = pNode->left;
return pNode;
}
while(pNode->parent)
{
if(pNode->parent->left == pNode) // 父节点的左孩子等于该节点
return pNode->parent;
pNode = pNode->parent;
}
}
网友评论