二叉搜索樹(shù) - LeetCode 701.二叉搜索樹(shù)中的插入操作

給定二叉搜索樹(shù)(BST)的根節(jié)點(diǎn) root 和要插入樹(shù)中的值 value ,將值插入二叉搜索樹(shù)。 返回插入后二叉搜索樹(shù)的根節(jié)點(diǎn)。新值和原始二叉搜索樹(shù)中的任意節(jié)點(diǎn)值都不同。

注意,可能存在多種有效的插入方式,只要樹(shù)在插入后仍保持為二叉搜索樹(shù)即可。 你可以返回任意有效的結(jié)果 。

輸入:root = [4,2,7,1,3], val = 5
輸出:[4,2,7,1,3,5]

輸入:root = [40,20,60,10,30,50,70], val = 25
輸出:[40,20,60,10,30,50,70,null,null,25]

輸入:root = [4,2,7,1,3,null,null,null,null,null,null], val = 5
輸出:[4,2,7,1,3,5]
image.png

另一個(gè)滿足題目要求可以通過(guò)的樹(shù)是:

image.png
class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
        if (root == null) { // 直接插入
            return new TreeNode(val);
        }
        TreeNode cur = root;
        while (cur != null) {
            if (val < cur.val) {
                if (cur.left == null) { // 插入到left
                    cur.left = new TreeNode(val);
                    break;
                } else {
                    cur = cur.left;
                }
            } else {
                if (cur.right == null) { // 插入到right
                    cur.right = new TreeNode(val);
                    break;
                } else {
                    cur = cur.right;
                }
            }
        }
        return root;
    }
}

復(fù)雜度分析:

  • 時(shí)間復(fù)雜度:O(N),其中 N 為樹(shù)中節(jié)點(diǎn)的數(shù)目。最壞情況下,我們需要將值插入到樹(shù)的最深的葉子結(jié)點(diǎn)上,而葉子節(jié)點(diǎn)最深為 O(N)。
  • 空間復(fù)雜度:O(1)。我們只使用了常數(shù)大小的空間。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容