1. 程式人生 > 其它 >701. 二叉搜尋樹中的插入操作

701. 二叉搜尋樹中的插入操作

深度優先搜尋

class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {

        if (root == null){
            return new TreeNode(val);
        }

        if (root.val > val){

            root.left = insertIntoBST(root.left, val);
            return root;
        }
        else {
            root.right = insertIntoBST(root.right, val);
            return root;
        }
    }
}

/**
 * 時間複雜度 O(n)
 * 空間複雜度 O(n)
 */

迭代

class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {

        if (root == null){
            return new TreeNode(val);
        }

        /**
         * 插入元素需要用到父節點,因此用prev指標指向父節點
         */
        TreeNode newRoot = root;
        TreeNode prev = null;

        while (root != null){

            prev = root;

            if (root.val > val){
                root = root.left;
            }
            else {
                root = root.right;
            }
        }

        if (prev.val > val){
            prev.left = new TreeNode(val);
        }
        else {
            prev.right = new TreeNode(val);
        }

        return newRoot;
    }
}

/**
 * 時間複雜度 O(n)
 * 空間複雜度 O(1)
 */

https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/