LeetCode刷題之第701題
題目描述
題目分析
這題其實就是一個很簡單的二叉排序樹插入問題。首先我們需要明白一棵二叉排序樹的插入過程是怎樣的,對於一棵二叉排序樹,我們插入一個結點時,首先是與當前樹的根結點大小進行比較,如果比根節點的值大,則插入右子樹部分然後對右子樹進行類似操作;小則插入左子樹部分,然後對左子樹進行同樣的操作。當我們知道此手動模擬的過程後,我們不難發現這明顯是一種重複比較的過程。因此可以考慮使用遞迴解決,僅需要判斷好什麼時候遞迴(往左還是往右遞迴),什麼時候插入(插入左結點還是插入右結點)即可。
程式碼
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;
}
結果展示
相關文章
- LeetCode 刷題—樹LeetCode
- LeetCode刷題 堆LeetCode
- LeetCode刷題整理LeetCode
- leetcode刷題(一)LeetCode
- leetcode 刷題之深度優先搜尋LeetCode
- 「翻轉字串」python之leetcode刷題|004字串PythonLeetCode
- JavaScript實現-LeetCode刷題-【對稱二叉樹】-第101題!!!JavaScriptLeetCode二叉樹
- Leetcode刷題準備LeetCode
- LeetCode刷題—陣列LeetCode陣列
- Leetcode刷題分類LeetCode
- LeetCode 刷題筆記LeetCode筆記
- LeetCode刷題記錄LeetCode
- leetcode刷題筆記LeetCode筆記
- 如何使用leetcode刷題LeetCode
- LeetCode 刷題指南(一):為什麼要刷題LeetCode
- Leetcode刷題之 【最近的請求次數】LeetCode
- LeetCode題解第122題LeetCode
- leetcode刷題記錄 661~LeetCode
- Leetcode刷題系列彙總LeetCode
- leetcode刷題筆記605LeetCode筆記
- Leetcode刷題——求眾數LeetCode
- leetcode排序專題演算法刷題LeetCode排序演算法
- LeetCode刷題進階之重新排列字串(1528)LeetCode字串
- leetcode刷題之1160拼寫單詞 java題解(超詳細)LeetCodeJava
- 用 Rust 刷 leetcode 第七題RustLeetCode
- 用 Rust 刷 leetcode 第一題RustLeetCode
- 用 Rust 刷 leetcode 第三題RustLeetCode
- 用 Rust 刷 leetcode 第二題RustLeetCode
- 用Rust刷leetcode第九題RustLeetCode
- 用Rust刷leetcode第八題RustLeetCode
- 用 Rust 刷 leetcode 第六題RustLeetCode
- 用 Rust 刷 leetcode 第五題RustLeetCode
- 用 Rust 刷 leetcode 第四題RustLeetCode
- 用Rust刷leetcode第十題RustLeetCode
- leetcode刷題筆記(3)(python)LeetCode筆記Python
- LeetCode刷題(javascript,python3)LeetCodeJavaScriptPython
- Leetcode第1~10題LeetCode
- 「判斷路線成圈」python之leetcode刷題|005PythonLeetCode