57二叉树的下一个结点

张乐乐章 张乐乐章     2022-10-09     771

关键词:

题目描述

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



思路:
如果一个节点有右子树,那么他的下一个节点就是它的右子树中的最左节点。
如果一个节点没有右子树,如果节点是它父节点的左子节点,那么它的下一个节点就是它的父节点。
如果一个节点即没有右子树,并且它还是它父节点的右子节点,我们可以沿着指向父节点的指针一直向上遍历,直到找到一个是他父节点的左子节点的节点。

 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.二叉... 查看详情