您的位置:首页 > 其它

在二叉树中找到一个节点的后继节点

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐