首页 > 其他 > 详细

二叉树的下一个节点

时间:2020-04-24 23:01:53      阅读:68      评论:0      收藏:0      [点我收藏+]

题目:给定一个二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左,右孩子节点的指针,还有一个指向父节点的指针

技术分享图片

 

 

 如果一个节点有右子树,那么它的下一个节点就是它的右子树中的最左子节点。即从右子节点出发一直沿着指向左子节点的指针,我们就能找到它的下一个节点

如果一个节点没有右子树,如果节点是它父节点的左子节点,那么它的下一个节点就是它的父节点。

如果一个节点既没有右子树,并且它还是它父节点的右子节点。我们可以沿着指向父节点的指针一直向上遍历,直到找到一个是它父节点的左子节点的节点。如果这样的节点存在,那么这个节点的父节点就是我们要找的下一个节点(以i为例,找到b,找到a)

剑指offer代码:

技术分享图片

 

技术分享图片

主要逻辑也同上,按照其是否有右子树,有右子树就一直往左找;如果没有右子树则不需要考虑其左子树,就开始看其是其父节点的左孩子还是右孩子,左孩子则其父节点就是其下一个节点,如果是右孩子则表示以其父节点为根的子树访问完了,继续往上,直到找到一个节点是其对应父节点的左孩子,表示这个左子树完了,所以其父节点就是下一个要访问的节点。

 

二叉树的下一个节点

原文:https://www.cnblogs.com/libin123/p/12770476.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!