您的位置:首页 > 其它

Inorder Successor in BST

2016-06-14 00:30 429 查看
好吧,自己一开始给写反了,写成前置点了。。。

后继点,即第一个比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;
// }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: