您的位置:首页 > 理论基础 > 数据结构算法

树-二叉树中某个节点的下一个节点

2016-04-25 17:05 465 查看

问题描述:

给定一个二叉树,查找某个节点的下一个节点

思考:略

代码(java):

public class FindNextNode {

static class Node{
private int val;
private Node left;
private Node right;
private Node parent;

public Node(int val) {
this.val = val;
}

@Override
public String toString() {
return val + "";
}
}

public static Node findNextNode(Node thisNode){

if (thisNode == null) {
return null;
}

Node next = null;
//1,节点有右子树,那么它的下一个节点就是它右子树最左节点
if(thisNode.right != null){
next = thisNode.right;
while(next.left != null){
next = next.left;
}
return next;
}

//2,节点没有右子树,他是父节点的左儿子,下一个节点就是父节点
if(thisNode.right == null || thisNode.parent.left == thisNode){
return thisNode.parent;
}

//3,,节点没有右子树,他是父节点的右儿子,那么使用parent指针知道找到一个节点,这个节点是它父亲的左节点,那么next为这个节点的父亲
//next == null是找到根的时候,所以就没有下一个节点
if(thisNode.right == null || thisNode.parent.right == thisNode){
next = thisNode;
while(next.parent.left != next || next != null){
next = next.parent;
}
return next;
}

return next;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息