在二叉树中找到一个节点的后继节点
2017-07-21 17:13
239 查看
在二叉树中找到一个节点的后继节点
现在有一种新的二叉树节点类型如下:
public class Node {
public int value;
public Node left;
public Node right;
public Node parent;
public Node(int data){
this.value = data;
}
}
该结构比普通二叉树节点结构多了一个指向父节点的 parent 指针。假设有一棵 Node 类型的节点组 成的二叉树,树中每个节点的 parent 指针都正确地指向自己的父节点,头节点的 parent 指向 null。 只给二叉树中的某个节点 node,请实现返回 node 的后继节点的函数。
后继节点:在二叉树的中序遍历的序列中,node 的下一个节点叫作node 的后继节点
public static Node getNextNode(Node node){
if(node == null){
return node;
}
if(node.right != null){
return getLeftMost(node.right);
}else{
Node parent = node.parent;
while(parent != null && parent.left != node){
node = parent;
parent = node.parent;
}
return parent;
}
}
public static Node getLeftMost(Node node){
if(node == null){
return node;
}
while(node.left != null){
node = node.left;
}
return node;
}
现在有一种新的二叉树节点类型如下:
public class Node {
public int value;
public Node left;
public Node right;
public Node parent;
public Node(int data){
this.value = data;
}
}
该结构比普通二叉树节点结构多了一个指向父节点的 parent 指针。假设有一棵 Node 类型的节点组 成的二叉树,树中每个节点的 parent 指针都正确地指向自己的父节点,头节点的 parent 指向 null。 只给二叉树中的某个节点 node,请实现返回 node 的后继节点的函数。
后继节点:在二叉树的中序遍历的序列中,node 的下一个节点叫作node 的后继节点
public static Node getNextNode(Node node){
if(node == null){
return node;
}
if(node.right != null){
return getLeftMost(node.right);
}else{
Node parent = node.parent;
while(parent != null && parent.left != node){
node = parent;
parent = node.parent;
}
return parent;
}
}
public static Node getLeftMost(Node node){
if(node == null){
return node;
}
while(node.left != null){
node = node.left;
}
return node;
}
相关文章推荐
- 在二叉树中找到一个节点的后继节点
- 在二叉树中找到一个节点的后继节点
- 如何在二叉树中找到一个节点的后继节点
- 在二叉树中找到一个节点的后继节点
- 给定一个二叉树,找到最大路径和。该路径可以在树中的任何节点处开始和结束。
- 在含有父结点指针的二叉树中找到一个结点的后继结点
- 【二叉树】寻找一个二叉树的节点在中序遍历中的后继节点
- 给一个二叉树,每个节点都是正或负整数,如何找到一个子树,它所有节点的和最大?
- 给一个二叉树,每个节点都是正或负整数,如何找到一个子树,它所有节点的和最大?
- 给一个由整数构成的排序二叉树, 给定一个整数, 找到二叉树中比它大并且最近它的节点。
- 有一个二叉树, 节点全部为整数,如何找到一个子树,它所有节点的和最大?要求编程序实现。
- 有父节点二叉树找中序遍历后继节点
- [阿里巴巴2015校园招聘]写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。 .
- 判断一个节点是否在一棵二叉树中
- 给一棵搜索二叉树,然后给出一个从跟到叶节点的最短的路径之和。
- 把二叉树的叶子节点连成一个二叉链表
- 找出二叉树中指定结点的下一个结点(中序后继)可以假定每个结点都有指向父节点的连接
- 二叉树的常用操作(节点的后继节点)
- 写一个函数,输入一个二叉树,树中每一个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。
- 一个关于二叉树的创建、先序遍历、中序遍历、后序遍历、求叶子节点的完整函数的c语言完整程序。