**LeetCode-Inorder Successor in BST

来源:互联网 发布:mac mobi转pdf软件 编辑:程序博客网 时间:2024/04/30 13:29

简直想不清楚!!!

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;  }}


0 0
原创粉丝点击