剑指offer系列31-----二叉树的下一个节点
【题目】给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。
注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
package com.exe7.offer; /**
* 【题目】给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。
* 注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
* @author WGS
*
*/
public class GetNextNode { public class TreeNode{
int val;
TreeNode left=null;
TreeNode right=null;
TreeNode next=null;
public TreeNode(int val){
this.val=val;
}
} public TreeNode getNextNode(TreeNode pNode){
if(pNode==null) return null;
//1 判断有无右子树,有就是右子树最左子节点;
TreeNode curNode=null;
if(pNode.right!=null){
curNode=pNode.right;
while(curNode.left!=null){
curNode=curNode.left;
}
return curNode;
}
//2 无右子树;
else{
//1) 判断该结点是否是其父节点的左结点,是,下个结点就是其父节点。
if(pNode.next==null) return null;
if(pNode==pNode.next.left){
return pNode.next;//返回其父节点
} //2) 该结点不是父节点的左结点即是其右节点,则判断其父节点是否是父父结点的左结点;
curNode=pNode.next;//该结点的父节点
while(curNode.next!=null){
if(curNode==curNode.next.left){
return curNode.next;//返回其父节点的父节点
}
curNode=curNode.next;//继续回溯
}
} return null; }
}
剑指offer系列31-----二叉树的下一个节点的更多相关文章
- 【剑指offer】08二叉树的下一个节点,C++实现
原创博文,转载请注明出处! # 题目 父节点指向子节点的指针用实线表示,从子节点指向父节点的指针用虚线表示. # 思路 如果节点有右子节点,则右子节点的最左节点是该节点的下一个节点.例如,寻找b的下一 ...
- 【剑指 Offer】08.二叉树的下一个节点
题目描述 给定一颗二叉树和其中的一个节点,找出中序遍历序列的下一个节点.树中的节点除了有两个分别指向左右节点的指针,还有一个指向父节点的指针. Java public class Solution08 ...
- 剑指offer:JZ8 二叉树的下一个结点
JZ8 二叉树的下一个结点 描述 给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针.下图为一棵有9个节点的二叉 ...
- 【剑指Offer】58:二叉树的下一个结点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 题解一:递归 //既然给了二叉树的某个结点,且二叉树存 ...
- 《剑指offer》-中序遍历下一个节点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. /* struct TreeLinkNode { in ...
- 剑指offer-面试题8-二叉树的下一个节点-二叉树
/* 题目: 给定一棵二叉树和其中一个节点,找出中序遍历的下一个节点. */ /* 思路: 两种情况: 节点存在右子树:节点右子树的最左节点: 节点不存在右子树,节点向上一直找父节点或祖父节点,直到其 ...
- 剑指offer系列20--从上到下打印二叉树
* 20 [题目]从上往下打印出二叉树的每个节点,同层节点从左至右打印. * [思路]从根结点开始,先保存结点,再看根结点的左右结点有没有值. * 有,就将左右值放到集合中: * 根节点输出后,打印根 ...
- 剑指offer系列33-----把二叉树打印成多行
[题目]从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 方法一:直接打印 package com.exe7.offer; import java.util.LinkedList; i ...
- 剑指offer系列29-----链表中环的入口节点-
[题目]一个链表中包含环,请找出该链表的环的入口结点. [思路]方法一:使用双指针 方法二:利用set集合的特性,不能添加重复数字,否则返回false package com.exe7.offer; ...
随机推荐
- Web上下文配置【MvcConfig】
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g ...
- itextsharp、Aspose.Words、Aspose.Cells联合使用
最近做了一个系统需要把文件转换为pdf然后把转换后的pdf合成一个pdf文件,网上搜索了半天,最终决定使用itestsharp.dll配合Aspose.words和Aspose.cells来做,废话少 ...
- RViz 实时观测机器人建立导航2D封闭空间地图过程 (SLAM) ----27
原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/ ROS提供了非常强大的图形化模拟环境 RViz,这个 RViz 能做的事情非常多.今天我们学习一下如何使 ...
- js部分---运算符,if分支语句,for循环;switch case 的用法;
------------------------------------------运算符---------------------------------------------------- *数 ...
- leetcode 148. Sort List ----- java
Sort a linked list in O(n log n) time using constant space complexity. 排序,要求是O(nlog(n))的时间复杂度和常数的空间复 ...
- Hive 复习
hive分为CLI(command line)(用的比较多) JDBC/ODBC-ThriftServer hiveServer(hive -service hiveserver),JDBC访问,一个 ...
- 如何读懂 Intel HEX 文件
什么是 Intel HEX 文件格式 转自:http://www.cnblogs.com/imapla/archive/2013/03/16/2926133.htmlIntel HEX 文件是遵循 ...
- stl的仿函数adapter
Stl的一点思考 编程语言是为编译器写一份策略,如果将这份策略模板化那就是泛型编程了 bind1st bind2nd not1 not2 adapter并不改变仿函数接口,只是将参数引入其他的运算流程
- Questions?
http://www.datastax.com/wp-content/themes/datastax-2014-08/files/NoSQL_Benchmarks_EndPoint.pdf http: ...
- MFC应用程序框架入门(转)
1 MFC概述 顾名思意,MFC应用程序框架是以MFC作为框架基础的,以此程序框架模式搭建起来的应用程序在程序结构组织上是完全不同于以前的Win32 SDK编程方式的.自20世纪90年代初问世以来,M ...