Successor

Inorder Successor of an input node can also be defined as the node with the smallest key greater than the key of input node.

  • Time: O(n)
  • Space: O(1)
// Inorder Successor
public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
    if (root == null) {
        return null;
    }
    if (root.val <= p.val) {
        return inorderSuccessor(root.right, p);
    } else {
        TreeNode node = inorderSuccessor(root.left, p);
        return node == null ? root : node;
    }
}

// Preorder Successor
public TreeNode preorderSuccessor(TreeNode root, TreeNode p) {
    if (root == null) {
        return null;
    }
    if (root.val >= p.val) {
        return preorderSuccessor(root.left, p);
    } else {
        TreeNode node = preorderSuccessor(root.right, p);
        return node == null ? root : node;
    }
}

results matching ""

    No results matching ""