二叉树的下一个节点

给定二叉树和其中某一节点,找出该节点在中序遍历序列的下一个节点

思路:
1.如果该节点有右子树,它的后继节点是右子树中的最左节点

  1. 如果没有右子树,那么由此向上找,如果某个节点的左孩子等于该节点,那么就返回该父节点。
二叉树的下一个节点_第1张图片
未命名文件.png
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;
 } 
}

你可能感兴趣的:(二叉树的下一个节点)