public class SuccessorNode {
public class Node {
public int value;
public Node right;
public Node left;
public Node parent;
Node(int value) { this.value = value; }
}
public static Node getSuccessorNode(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;
}
}
带父指针的节点找后继节点
最新推荐文章于 2024-07-12 15:51:39 发布