LeetCode將有序陣列轉化為二叉搜尋樹--Java
一、將有序陣列轉化為二叉搜尋樹
題目
詳情連結:有序陣列轉二叉樹
二、使用步驟
1.解題思路
將當前陣列的中間值用於建立當前的節點,然後中間值左邊的數,分為一個新的子陣列,這裡我們暫且叫左子陣列,將右邊的分為右子陣列。將左子陣列放入當前節點的左子樹。右子樹組,放入當前節點的右子樹。重複上述步驟即可。
2.解題步驟
- 建立一個新的節點節點值為陣列的中位值 。
- 判斷當前子陣列大小是否為1。
* 如果為1,則直接返回該節點。
* 反之執行第三步。 - 判斷當前陣列的 (中間值得索引-1)>=0, 就是判斷當前節點是否存在左子樹。
* 如果大於0,建立一個新的陣列命名為左子陣列,值為當前陣列的中間值左邊的所有數值。然後將將左子陣列傳入當前函式執行。
* 反之,則表明陣列越界。直接執行第四步 - 判斷當前陣列的**(中間值的索引是+1)<=當前陣列的長度** ,就是判斷當前節點是否存在右子樹。
* 如果小於的話,建立一個新的陣列命名為右子陣列,值為當前陣列的中間值右邊的所有數值。然後將將右子陣列傳入當前函式執行。
* 反之,執行第五步 - 返回當前節點。
程式碼
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if(nums==null||nums.length==0){
return null;
}{
return arrrayToBST(nums,0,nums.length-1);
}
}
public TreeNode arrrayToBST(int[] nums,int start ,int end){
int length=end-start+1;
TreeNode root=new TreeNode(nums[start+length/2]);
if(start==end){
return root;
}else {
if(length/2-1>=0){
root.left=arrrayToBST(nums,start,start+length/2-1);
}
if(length/2+1<=length-1){
root.right=arrrayToBST(nums,start+length/2+1,end);
}
return root;
}
}
}
三、總結
樹的問題一般是通過遞迴和三種遍歷方式來解決。目前我所寫的很多樹的比較簡單的題目都是通過遞迴和樹的三種遍歷方式來實現的。
各位大佬們看完後覺得我寫得很差的的話,可以在評論去瘋狂踩踏我蹂躪我。但是最最為重要的事就是不要白嫖!!!!雖然我知道在看的各位都是白嫖黨!!!!
相關文章
- leetcode 108.將有序陣列轉換為二叉搜尋樹 JavaLeetCode陣列Java
- LeetCode 108. 將有序陣列轉換為二叉搜尋樹LeetCode陣列
- LeetCode-108-將有序陣列轉換為二叉搜尋樹LeetCode陣列
- Python教程:將有序陣列轉換為二叉搜尋樹Python陣列
- LeetCode 109——有序連結串列轉化二叉搜尋樹LeetCode
- 程式碼隨想錄演算法訓練營day23 | leetcode 669. 修剪二叉搜尋樹、108. 將有序陣列轉換為二叉搜尋樹、538. 把二叉搜尋樹轉換為累加樹演算法LeetCode陣列
- 程式碼隨想錄 第23天 | 669. 修剪二叉搜尋樹 ● 108.將有序陣列轉換為二叉搜尋樹 ● 538.把二叉搜尋樹轉換為累加樹 ● 總結篇陣列
- 程式碼隨想錄演算法訓練營,9月17日 | 669. 修剪二叉搜尋樹,108.將有序陣列轉換為二叉搜尋樹,538.把二叉搜尋樹轉換為累加樹演算法陣列
- 程式碼隨想錄演算法訓練營第23天 | 669. 修剪二叉搜尋樹、108.將有序陣列轉換為二叉搜尋樹、538.把二叉搜尋樹轉換為累加樹演算法陣列
- LeetCode系列之「有序連結串列轉換二叉搜尋樹」LeetCode
- LeetCode-109-有序連結串列轉換二叉搜尋樹LeetCode
- 【LeetCode(Java) - 33】搜尋旋轉排序陣列LeetCodeJava排序陣列
- 有序表和搜尋二叉樹二叉樹
- LeetCode 33——搜尋旋轉排序陣列LeetCode排序陣列
- leetcode-1382. 將二叉搜尋樹變平衡LeetCode
- LeetCode 81——搜尋旋轉排序陣列 IILeetCode排序陣列
- LeetCode33. 搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode#33搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode33 搜尋旋轉排序陣列LeetCode排序陣列
- leetCode33搜尋旋轉排序陣列LeetCode排序陣列
- leetcode, LC68:旋轉排序陣列搜尋LeetCode排序陣列
- LeetCode刷題記63-109. 有序連結串列轉換二叉搜尋樹【檢視解法】LeetCode
- 將兩個有序陣列合併為一個有序陣列陣列
- Leetcode 700. 二叉搜尋樹中的搜尋(DAY 2)LeetCode
- Leetcode 演算法題解系列 - 二維陣列快速查詢元素(二叉搜尋樹)LeetCode演算法陣列
- LeetCode 95 | 構造出所有二叉搜尋樹LeetCode
- LeetCode98. 驗證二叉搜尋樹LeetCode
- LeetCode-098-驗證二叉搜尋樹LeetCode
- LeetCode-099-恢復二叉搜尋樹LeetCode
- 【LeetCode】98. 驗證二叉搜尋樹LeetCode
- LeetCode-096-不同的二叉搜尋樹LeetCode
- LeetCode-173-二叉搜尋樹迭代器LeetCode
- LeetCode 熱題 HOT 100 Java題解——33. 搜尋旋轉排序陣列LeetCodeJava排序陣列
- leetcode 700. 二叉搜尋樹中的搜尋 思考分析LeetCode
- 466. 使用快慢指標把有序連結串列轉換二叉搜尋樹指標
- [leetCode]95. 不同的二叉搜尋樹 IILeetCode
- 【ALGO】Leetcode 98.驗證二叉搜尋樹GoLeetCode
- dfs 驗證搜尋二叉樹——leetcode98二叉樹LeetCode