剑指offer——06二叉树的下一个节点

Posted 自由の翼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer——06二叉树的下一个节点相关的知识,希望对你有一定的参考价值。

题目描述

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
 
题目的意思是,在一颗二叉树的中序遍历中,给出其中一个节点,让你找到中序中该节点的下一个节点
 
题解:
情况 1:某节点有右子树,下一节点为右子树中的最左子节点
情况 2:某节点无右子树,且就是他父节点左子节,则下一节点为父节点
情况 3:某节点无右子树,且为他父节点的右子节点,则向上递归寻找它的父节点,直到根节点或某个父节点是它自身父节点的左子节点
 
 1 class Solution {
 2 public:
 3     TreeLinkNode* GetNext(TreeLinkNode* pNode)
 4     {
 5         if (pNode == nullptr)
 6             return nullptr;
 7         if (pNode->right != nullptr)//有右子树,则为右子树的最左节点
 8         {
 9             pNode = pNode->right;
10             while (pNode->left != nullptr)
11                 pNode = pNode->left;
12             return pNode;
13         }
14         else if (pNode->right == nullptr)
15         {
16             while (pNode->next!=nullptr && pNode != pNode->next->left)
17                 pNode = pNode->next;
18             return pNode->next;
19         }
20         return nullptr;
21     }
22 };

 

  

以上是关于剑指offer——06二叉树的下一个节点的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer——二叉树的下一个节点

剑指offer-8 二叉树的下一个节点

《剑指Offer——从中序遍历中找出二叉树的下一个结点》代码

剑指Offer-二叉树的下一个结点

[ 剑指offer ] 面试题8:二叉树的下一个节点

剑指offer:二叉树的下一个节点