好吧,自己一开始给写反了,写成前置点了。。。
后继点,即第一个比node大的点。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
if (root == null) {
return null;
}
TreeNode succMax = null;
TreeNode node = root;
while (node != null) {
if (node.val == p.val) {
if(node.right == null) {
return succMax;
} else {
node = node.right;
}
} else if (node.val > p.val) {
succMax = node;
node = node.left;
} else {
node = node.right;
}
}
return succMax;
}
// public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
// if (root == null) {
// return null;
// }
// TreeNode prevMin = null;
// TreeNode node = root;
// while (node != null) {
// if (node.val == p.val) {
// if(node.left == null) {
// return prevMin;
// } else {
// node = node.left;
// }
// } else if (node.val < p.val) {
// prevMin = node;
// node = node.right;
// } else {
// node = node.left;
// }
// }
// return prevMin;
// }
}