LeetCode刷題之第701題

yiyexy發表於2020-09-30

題目描述

在這裡插入圖片描述

題目分析

這題其實就是一個很簡單的二叉排序樹插入問題。首先我們需要明白一棵二叉排序樹的插入過程是怎樣的,對於一棵二叉排序樹,我們插入一個結點時,首先是與當前樹的根結點大小進行比較,如果比根節點的值大,則插入右子樹部分然後對右子樹進行類似操作;小則插入左子樹部分,然後對左子樹進行同樣的操作。當我們知道此手動模擬的過程後,我們不難發現這明顯是一種重複比較的過程。因此可以考慮使用遞迴解決,僅需要判斷好什麼時候遞迴(往左還是往右遞迴),什麼時候插入(插入左結點還是插入右結點)即可。

程式碼

public TreeNode insertIntoBST(TreeNode root,int val){
        if (root==null)
            return new TreeNode(val);
        if (val<root.val&&root.left!=null)
            insertIntoBST(root.left,val);
        else if (val<root.val&&root.left==null)
            root.left = new TreeNode(val);
        else if (val>root.val&&root.right!=null)
            insertIntoBST(root.right,val);
        else if (val>root.val&&root.right==null)
            root.right = new TreeNode(val);
        return root;
    }

結果展示

在這裡插入圖片描述

相關文章