算法系列——二叉树下一个结点
来源:互联网 发布:管锥编 知乎 编辑:程序博客网 时间:2024/06/08 18:10
题目描述
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
解题思路
(1) 若该节点存在右子树:则下一个节点为右子树最左子节点(如图节点 B )
(2) 若该节点不存在右子树:这时分两种情况:
2.1 该节点为父节点的左子节点,则下一个节点为其父节点(如图节点 D )
2.2 该节点为父节点的右子节点,则沿着父节点向上遍历,知道找到一个节点的父节点的左子节点为该节点,则该节点的父节点下一个节点(如图节点 I ,沿着父节点一直向上查找找到 B ( B 为其父节点的左子节点),则 B 的父节点 A 为下一个节点)。
程序实现
/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; TreeLinkNode(int val) { this.val = val; }}*/public class Solution { public TreeLinkNode GetNext(TreeLinkNode node) { if(node==null) return null; if(node.right!=null){ //如果有右子树,则找右子树的最左节点 node = node.right; while(node.left!=null) node = node.left; return node; } while(node.next!=null){ //没右子树,则找第一个当前节点是父节点左孩子的节点 if(node.next.left==node) return node.next; node = node.next; } return null; //退到了根节点仍没找到,则返回null }}
阅读全文
0 0
- 算法系列——二叉树下一个结点
- 【算法】求二叉树的下一个结点
- 《剑指offer》——二叉树的下一个结点
- 剑指offer——57.二叉树的下一个结点
- 剑指offer—二叉树的下一个结点
- 剑指offer—二叉树的下一个结点
- 找出二叉树的下一个结点(算法)
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 设置TextView文本支持长按复制粘贴
- 详说css与预处理器(以及less、sass、stylus的区别)
- 安卓相机使用代码
- 刚开通微博。。。。WEBview设置
- 数据结构课程主页16智11
- 算法系列——二叉树下一个结点
- jar包详解
- js中window.location.search的用法和作用
- Andrew Ng笔记
- 怎样防止App在后台运行,点击应用桌面图标重新启动?
- 有道云笔记-记录与分享[JVM内存模型]
- phpStudy集成环境下 安装composer失败
- js日期与字符串之间相互转换
- Javascript 严格模式详解