题目描述

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

/*
struct TreeLinkNode {int val;struct TreeLinkNode *left;struct TreeLinkNode *right;struct TreeLinkNode *next;TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) {}
};
*/
class Solution {
public:TreeLinkNode* GetNext(TreeLinkNode* pNode){if(pNode==NULL)              //建议画图分析比较好理解return pNode;       TreeLinkNode* pNext=NULL;   //pNode的下一个结点if(pNode->right!=NULL)      //有右子树,则当前结点的下一个结点就是其右子数的最左结点{TreeLinkNode* pRight=pNode->right;while(pRight->left!=NULL)pRight=pRight->left;pNext=pRight;                }else if(pNode->next!=NULL)  //无右子树,分以下两种情况:(1)当前结点是其父结点的左子结点,则当前结点的下一个结点就是其父节点{TreeLinkNode* pCurrent=pNode;TreeLinkNode* pParent=pNode->next;while(pParent!=NULL&&pCurrent!=pParent->left) //(2)若当前结点是父结点的右子结点,情况稍微有点复杂。我们可以沿着指向{                                           //父节点的指针一直向上遍历,直到找到一个是它父节点的左子结点的结点。如果pCurrent=pParent;                        //这样的结点存在,那么这个结点的父节点就是我们要找的下一个结点。pParent=pParent->next;                  }pNext=pParent;}   return pNext;}
};

剑指offer面试题[58]-二叉树的下一个结点相关推荐

  1. 剑指offer(C++)-JZ8:二叉树的下一个结点(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结 ...

  2. 剑指offer——面试题58:二叉树的下一个结点

    剑指offer--面试题58:二叉树的下一个结点 这个题要认真分析一下... Solution1: 自己想出来的破算法 /* struct TreeLinkNode {int val;struct T ...

  3. 剑指offer面试题[19]-二叉树的镜像

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8/ \6 10/ \ / \5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5 ...

  4. 剑指offer面试题34. 二叉树中和为某一值的路径(先序遍历)(回溯)

    题目描述 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 思路 详见链接 代码 class Solution:def ...

  5. 剑指offer面试题27. 二叉树的镜像(递归)

    题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 思路 详见链接 代码 class Solution:def mirrorTree(self, root:TreeNode)->Tr ...

  6. 剑指Offer - 面试题58 - II. 左旋转字符串

    1. 题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转 ...

  7. 剑指offer 面试题58 - II. 左旋转字符串

    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结 ...

  8. 剑指offer面试题58 - II. 左旋转字符串(切片)(一行代码)

    题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两 ...

  9. 剑指offer面试题58 - I. 翻转单词顺序(双指针)

    题目描述 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a student. ",则输出&quo ...

最新文章

  1. quartz关闭DBUG日志
  2. php 自定义属性,HTML5的data-*自定义属性是什么-
  3. 关于华为鸿蒙的三个核心问题
  4. 万能驱动xp离线版_教你用SC封装软件来封装XP系统
  5. 前端学习(3293):effect hook
  6. simulink中文_CarSimamp;Simulink 联合仿真案例
  7. 【华为云技术分享】自动网络搜索(NAS)在语义分割上的应用(一)
  8. mysql alter更新_MySQL 操作命令梳理(2)-alter(update、insert)
  9. 【知乎】神回答,我们吐的不是槽 233
  10. 排错技能:任务管理器中追踪某w3wp.exe是哪个IIS站点的application pool
  11. ecs云服务器 mysql经常自动停止挂掉重启问题分析
  12. 计算机应用基础试题及答案数据库,数据库原理试题及答案.doc
  13. 马克思主义基本原理知识框架图——政治经济学中各种资本的划分
  14. grafana-普罗米修斯-监控linux-windows版
  15. 没考计算机水平怎么填6,“计算机水平”怎么填,没曾考级,只参加过大 – 手机爱问...
  16. 软考(软件设计师)考点总结 --法律法规与知识产权
  17. Java商品价格竞猜活动
  18. 云栖科技评论第40期:斯坦福大学研发出易弯曲的有机半导体集成电路
  19. 视频处理软件有那些,优缺点介绍
  20. C语言程序设计实践教程 杨有安pdf

热门文章

  1. 02205微型计算机原理与接口技术自考,2012年微型计算机原理与接口技术自考题模拟(2)...
  2. 学完python基础后应该学什么专业_小白刚入门Python,学完基础后,接下来的学习步骤!...
  3. 用c语言枚举计算坐标,来个c++枚举有效范围计算器
  4. mysql in varchar_MySQL中char和varchar有啥区别?优缺点是啥?
  5. 备份文件到本地服务器失败,已解决: 备份index/boostrap ,备份filesystem 失败 - Dell Community...
  6. oracle 10g安装企业版,企业版Oracle10g的安装-过程
  7. 机器视觉:CMOS图像传感器
  8. VC++调试方法和技巧
  9. Pandas中Series和DataFrame的索引
  10. P2234 [HNOI2002]营业额统计