无parent成员
class Solution {
public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
if(p == null || root == null) return null;
if(root.val <= p.val) return inorderSuccessor(root.right, p);
TreeNode ans = inorderSuccessor(root.left, p);
if(ans != null && ans.val < root.val) return ans;
else return root;
}
}
class Solution {
public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
if(p == null || root == null) return null;
TreeNode cur = root;
TreeNode ans = null;
while(cur != null){
if(cur.val <= p.val){
cur = cur.right;
}else{
if(ans == null || ans.val > cur.val) ans = cur;
cur = cur.left;
}
}
return ans;
}
}
有parent成员
public class BinNode{
int value;
BinNode left;
BinNode right;
BinNode parent;
public BinNode(int value){
this.value = value;
}
}
public class BinTree{
public BinNode nodeSucc(BinNode node){
if(node.right){
node = node.right;
while(node.left) node = node.left;
}else{
while(node.parent.left != node){
node = node.parent;
if(!node.parent) break;
}
node = node.parent;
}
return node;
}
}