题目描述

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

一 . 理解题意

该题目我们可以借鉴一个非常影响不好的例子来理解题意(重男轻女的思想,当然本人可不会这样,本人家庭更不会,从小被姐姐打成哈士奇)。

此外呢,该题目的关键点在于二叉树的遍历,其实这个已经说了好多次了,具体内容点这里。理解这个就好了,中序遍历嘛,就是左→根→右!

题目分析:我们把这个题目从一个“小家”出发,三个节点我们分别理解成(父节点--父母)、(左节点--儿子)、(右节点--闺女);而该节点的下一个节点我们可以理解成该节点向下一节点的索取位置。

所以呢,这个题目就可以从两个大方向,三个小方向出发了,分别是父母(父节点),孩子(儿子和女儿),所以啊,这个题目你在分析的时候一定要夹杂着重男轻女的思想。。

1. 站在苏大强和苏妈妈的角度,有明哲、明成、明玉三个孩子,两口子这么重男轻女,肯定不会向儿子索取东西,但是如果明玉有儿子,那么大强一定要先敲诈明玉的儿子一番(步骤2,女儿就算了,大强不忍心),如果没生儿子,那就会敲诈女儿明玉(步骤4,6,7),明玉,我要三室一厅。

2. 站在儿子的角度,比如啃老族明成,压根想都不用想,直接找老爹老妈要钱!!(步骤1,3)

3. 站在女儿明玉角度想,向父母索取压根没可能,就差把你卖了,所以呢,只能找那个可以管住你爹的爹的爹了(步骤5)。当然如果不存在了,就真的没法了,只能return null;(步骤8)了。

不知道这个例子合不合适,但是蛮好理解的,但是要记住,该题目是针对中序遍历!!!!!!!如果是前序或者后续就不可以这样想了,但是依然可以通过伦理性的思维去想,哈哈哈,不举例了,怕误人子弟。

二 . 代码实现

/*
public class TreeLinkNode
{public int val;public TreeLinkNode left;public TreeLinkNode right;public TreeLinkNode next;public TreeLinkNode (int x){val = x;}
}*/
class Solution
{public TreeLinkNode GetNext(TreeLinkNode pNode){// write code here//空值鲁棒判断if(pNode == null){return null;}//有女儿空,女儿有后代就要孙子,有孙女也不要,没孙子就要女儿if(pNode.right != null){pNode = pNode.right;while(pNode.left != null){pNode = pNode.left;}return pNode;}//没女儿的时候while(pNode.next != null){//儿子啃老if(pNode.next.left == pNode){return pNode.next;}//孙女找祖宗pNode = pNode.next;}//下个节点是空的时候,输出空return null;}
}

转载于:https://www.cnblogs.com/WeiMLing/p/10968499.html

剑指Offer的学习笔记(C#篇)-- 二叉树的下一个节点(好理解版本)相关推荐

  1. 剑指Offer的学习笔记(C#篇)-- 数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...

  2. 剑指Offer的学习笔记(C#篇)-- 用两个栈实现队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 一 . 概念! 首先要理解栈和队列的概念. 1. 栈:咱可以简单的把栈理解成装羽毛球的球桶.或者我们吃的 ...

  3. 剑指offer刷题笔记

    最近LeetCode上的<剑指offer>的题刷的差不多了,只剩几道无聊的题了.现在把做题过程中的记录放在这里,作为将来查看的笔记,也同时欢迎大家指出其中的不当之处(QQ).虽然博主现在仍 ...

  4. 【剑指Offer】剑指Offer刷题笔记

    数组和字符串 剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个 ...

  5. 【重点】剑指offer——面试题62:序列化二叉树

    剑指offer--面试题62:序列化二叉树 Solution1: 参考网址:https://www.nowcoder.com/profile/6475323/codeBookDetail?submis ...

  6. 剑指offer——面试题60:把二叉树打印成多行

    剑指offer--面试题60:把二叉树打印成多行 Solution1: 20180911重做.经典题目.牢记做法! /* struct TreeNode {int val;struct TreeNod ...

  7. 剑指offer——面试题23:从上往下打印二叉树

    剑指offer--面试题23:从上往下打印二叉树 Solution1: 典型的BFS算法! 思路一开始没想到,按照书上的思路写的答案... 注意:deque是双向队列,在头尾插入都很快! /* str ...

  8. 剑指offer——面试题6:重建二叉树

    剑指offer--面试题6:重建二叉树 一个小知识点:已知二叉树的中序遍历和前序遍历(或后序遍历)结果则可以确定该二叉树:但是通过二叉树的前序遍历和后序遍历结果无法确定该二叉树!!! Solution ...

  9. 剑指offer刷题笔记-篇2

    文章目录 剑指offer 前言 机器人的运动范围 剪绳子 二进制中1的个数 数值的整数次方 从1到n的位数 移除链表元素 删除链表中重复的结点 *正则表达式匹配 *表示数值的字符串 调整数组顺序 链表 ...

  10. 【LeetCode 剑指offer 刷题笔记】汇总(已完成)

    前言   不知不觉就结束了自己的秋招之路,虽感觉有些艰辛但是收获很多.找工作那段时间做了很多学习笔记,这是数据结构与算法相关的一部分笔记,这一块除了复习相关教科书,还有就是刷LeetCode和< ...

最新文章

  1. [ZCCAD-2006.12]CAD练习图例
  2. python【力扣LeetCode算法题库】17-电话号码的字母组合
  3. OpenGL油画效果
  4. windows配置samba客户端_如何搭建与Windows客户机结合使用的Samba文件服务器?
  5. 7003.node.js环境搭建及三方软件包
  6. 数值分析方阵的QR分解
  7. PL/SQL 快捷键设置
  8. javaScript 中创建json/转换字符串为json
  9. 至强cpu型号列表_Cascade Lake全家福:图说第二代至强可扩展处理器
  10. Lidar Studio点云处理与分析软件V1.1
  11. HenCoder「仿写酷界面」征稿
  12. PPT:PowerPoint to Flash SDK:SWF
  13. js问号点的作用(?.)和问号问号(??)的用法
  14. 3 继续测试一下 esp_tunnel 用 racoon协商 用setkey设置 spd
  15. Windows10重装、安装 超级详细、小白教程 官方正版安装
  16. 技术分享电商 API 获取商品详情返回值说明(可测试)
  17. AWS Ec2实例挂载S3存储桶实践
  18. SpringCloud之搭建PiggyMetrics项目
  19. Windows Server 2016之RDS部署之添加RD虚拟化主机
  20. python江红第五章答案_【原创】半江瑟瑟半江红【第五章】

热门文章

  1. Redis 低成本、高可用设计,牛逼!
  2. 卧槽!Intellij IDEA中竟然有这么多炫酷的插件,啪啪啪~
  3. 职场“35岁危机”:这是我看过的最棒建议
  4. 阿里妈妈大规模在线分层实验实践
  5. 龙芯录取通知书引争议 中科院回复:龙芯不是汉芯
  6. 那些年,陪你度过最困难时光的女孩还在么?
  7. 程序员必备简捷开发辅助工具总结
  8. JavaScript:jklyDB
  9. css设置字体的行数,超出显示...
  10. iOS常用第三方类库 Xcode插件