关键词:
题目描述
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
思路:
如果一个节点有右子树,那么他的下一个节点就是它的右子树中的最左节点。
如果一个节点没有右子树,如果节点是它父节点的左子节点,那么它的下一个节点就是它的父节点。
如果一个节点即没有右子树,并且它还是它父节点的右子节点,我们可以沿着指向父节点的指针一直向上遍历,直到找到一个是他父节点的左子节点的节点。
1 /*
2 public class TreeLinkNode {
3 int val;
4 TreeLinkNode left = null;
5 TreeLinkNode right = null;
6 TreeLinkNode next = null;
7
8 TreeLinkNode(int val) {
9 this.val = val;
10 }
11 }
12 */
13 public class Solution {
14 public TreeLinkNode GetNext(TreeLinkNode node){
15 if(node == null) return null;
16 if(node.right!=null){ //1、右节点不为空
17 //node 的下一个节点就是 当前node的右子树中,最左的节点
18 node = node.right;
19 while(node.left!=null)
20 node = node.left;
21 return node;
22 }
23 else if(node.next!=null){//2右节点为空,分2种情况
24 //2.1、node是父节点的左子节点,那么node的下一个节点就是它的父亲节点。
25 if(node.next.left==node) return node.next;
26 //2.2、node 即没有右子树,并且是父节点的右子节点,沿着指针一直往上遍历,
27 //直到找到一个是他父节点的左子节点的节点。
28 if(node.next.right==node){
29 while(node.next!=null){
30 if(node.next.left==node) return node.next;
31 node = node.next;
32 }
33 }
34 }
35 return null;
36 }
37 }
剑指offer-57.二叉树的下一个结点(c++/java)(代码片段)
题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。分析:二叉树的中序遍历是左根右,所以如果一个结点的右子树不为... 查看详情
剑指offer(57)二叉树的下一个节点(代码片段)
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 题目分析这题一定要画图,因为只有画图我们才能分清楚下一... 查看详情
57.二叉树的下一个结点(python)(代码片段)
思路如果该节点有右节点,那么它的下一个结点就是其右子树的最左节点否则,如果他是父节点的左节点,则返回他的父节点,否则往上找,直到他的某个父节点a是a父节点的左节点,返回a的父节点。1classSolution:2defGetNext(self,pNod... 查看详情
面试题8:二叉树的下一个结点
//面试题8:二叉树的下一个结点//题目:给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点?//树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针。//二叉树的结构体定义如... 查看详情
二叉树的下一个结点
题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。实现语言:Java/*publicclassTreeLinkNodeintval;TreeLinkNodeleft=null;TreeLinkNoder... 查看详情
二叉树的下一个结点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*publicclassTreeLinkNode{intval;TreeLinkNodeleft=null;TreeLinkNoderight=null;TreeLinkNodenext=null... 查看详情
二叉树的下一个结点(代码片段)
题目给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路我们以上图为例进行讲解,上图二叉树的中序遍历是d,b,h,e,i,a,f,c,g... 查看详情
55二叉树的下一个结点
一、题目给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。二、解法1/*2publicclassTreeLinkNode{3intval;4TreeLinkNodeleft=null;5TreeLinkNoderig... 查看详情
剑指offer面试题8.二叉树的下一个结点
面试题8.二叉树的下一个结点NowCoder题目描述给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点?树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针。Java实现略 查看详情
二叉树的下一个结点(代码片段)
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。publicclassTreeLinkNodeintvalue;TreeLinkNodeleft=null;TreeLinkNoderight=null;TreeLinkNo... 查看详情
二叉树的下一个结点(代码片段)
...语言2秒空间限制:C/C++32M,其他语言64M题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:中序遍历:左中右,... 查看详情
剑指offer-二叉树的下一个结点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路分析二叉树的下一个节点,一共有以下情况:二叉树为空,则... 查看详情
19.二叉树的下一个节点
1.如果一个结点有右子树,那么它的下一个结点就是它的右子树的最左子结点。2.如果当前节点没有右儿子,我们可以沿着指向父结点的指针一直向上遍历,直到找到一个是它父结点的左子结点的结点。 查看详情
二叉树的下一个结点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路:1.如果给定节点有右子树,那么右子树上面的最左节点... 查看详情
二叉树的下一个结点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。树见书P275分三种情况:1.该节点有右子树,下一个结点就是它右子... 查看详情
二叉树的下一个节点(代码片段)
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 1/*2publicclassTreeLinkNode3intval;4TreeLinkNodeleft=null;5TreeLinkNoderight=null... 查看详情
剑指offer-二叉树的下一个结点(代码片段)
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 若结点存在右孩子,则右孩子的最坐下结点为中序遍历下一个... 查看详情
59.二叉树的下一个节点(代码片段)
题目描述:??给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路分析:??二叉树的下一个节点,一共有以下情况:??1.二叉... 查看详情