您的位置:首页 > 其它

**LeetCode-Inorder Successor in BST

2015-10-22 08:23 483 查看
简直想不清楚!!!

iterative: 

TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
TreeNode* candidate = NULL;
while (root)
root = (root->val > p->val) ? (candidate = root)->left : root->right;
return candidate;
}

recursive:
public TreeNode successor(TreeNode root, TreeNode p) {
if (root == null)
return null;

if (root.val <= p.val) {
return successor(root.right, p);
} else {
TreeNode left = successor(root.left, p);
return (left != null) ? left : root;
}
}

predecessor
public TreeNode predecessor(TreeNode root, TreeNode p) {
if (root == null)
return null;

if (root.val >= p.val) {
return predecessor(root.left, p);
} else {
TreeNode right = predecessor(root.right, p);
return (right != null) ? right : root;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: