题目描述

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

  

最新文章

  1. HTTP 使用期及新鲜度算法
  2. October 17th 2016 Week 43rd Monday
  3. centos6.5下安装qq2012
  4. 自我反思--table的简单数据分页
  5. Mac下修改Hosts文件工具——Gas Mask
  6. nyoj 211 Cow Contest
  7. Q4: Two Sum
  8. android关于window
  9. java-9 异常处理
  10. java 客户端发起http请求
  11. Error:No such property: GROUP for class: org.gradle.api.publication.maven.internal.deployer.DefaultGroovyMavenDeployer
  12. javascript右键菜单分析
  13. Linux - script练习
  14. 从Android源码修改cpu信息
  15. # 2017-2018-2 20155228 《信息安全系统设计原理》 使用VirtualStudio2008创建和调用静态库和使用VirtualC++6.0创建和调用动态库
  16. java 调用 wsdl形式的webservice 示例
  17. 学习了一天的python,终于可以爬爬了-_-
  18. React文档(九)list和key
  19. 一: vue的基本使用
  20. sql 日期格式

热门文章

  1. Sqli labs系列-less-2 详细篇
  2. wampServer2.2 You don't have permission to access /phpmyadmin/ on this server.
  3. 什么是CI/CD?
  4. postgres日志爆盘处理方案-转自DBA汪x
  5. HTML5篇
  6. java oop第14章_Swing(Java界面设计)
  7. linux 两个进程通过 共享内存 通信例子
  8. Java调用Linux下的shell命令并将结果以流的形式返回
  9. 利用reduce方法,对数组中的json对象去重
  10. leetcood学习笔记-107-二叉树的层次遍历二