首页 > 其他 > 详细

二叉树的下一个结点

时间:2020-08-02 17:50:55      阅读:95      评论:0      收藏:0      [点我收藏+]

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

解法:先判断当前节点是否存在右子树,如果存在右子树,就对右子树一直寻找最左结点,直到找到最左的一个结点。

      当不存在右子树,就判断是否存在父亲结点,如果不存在父亲结点,说明该节点位根结点,直接返回null,如果存在父亲结点,再判断该结点是否为父亲结点的左结点

      如果是左结点,直接返回父亲结点,如果不是左结点,就需要一直往上找父结点

 1 public TreeLinkNode GetNext(TreeLinkNode pNode) {
 2         //该结点还有右子树
 3         if (pNode.right != null) {
 4             pNode = pNode.right;
 5             while (pNode.left != null) {
 6                 pNode = pNode.left;
 7             }
 8             return pNode;
 9         }
10         while (pNode.next != null) {
11             if (pNode == pNode.next.left) {
12                 return pNode.next;
13             }
14             pNode = pNode.next;
15         }
16         return null;
17     }

 

二叉树的下一个结点

原文:https://www.cnblogs.com/0error0warning/p/13418709.html

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