leetcode 108.將有序陣列轉換為二叉搜尋樹 Java
題目連結
https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/
描述
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。
本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。
示例
給定有序陣列: [-10,-3,0,5,9],
一個可能的答案是:[0,-3,9,-10,null,5],它可以表示下面這個高度平衡二叉搜尋樹:
0
/ \
-3 9
/ /
-10 5
初始程式碼模板
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
}
}
程式碼
根據有序陣列,建立平衡的二叉搜尋樹,也就相當於根據中序遍歷還原原來的二叉樹,只有一個遍歷,並不能完全確定二叉樹的結構。
以下只是可以參考的解決方案,每次取選取區間的中點作為子樹的根節點,劃分為兩個區間,每個區間再以中點分割,迴圈往復,知道只剩一個節點,這個時候就不能再次分割了。
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
return createTree(nums, 0, nums.length - 1);
}
private TreeNode createTree (int[] nums, int left, int right) {
if (left > right) {
return null;
}
int mid = (left + right) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = createTree(nums, left, mid - 1);
root.right = createTree(nums, mid + 1, right);
return root;
}
}
相關文章
- LeetCode 108. 將有序陣列轉換為二叉搜尋樹LeetCode陣列
- LeetCode將有序陣列轉化為二叉搜尋樹--JavaLeetCode陣列Java
- LeetCode-108-將有序陣列轉換為二叉搜尋樹LeetCode陣列
- Python教程:將有序陣列轉換為二叉搜尋樹Python陣列
- 程式碼隨想錄演算法訓練營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 109——有序連結串列轉化二叉搜尋樹LeetCode
- 【LeetCode(Java) - 33】搜尋旋轉排序陣列LeetCodeJava排序陣列
- LeetCode刷題記63-109. 有序連結串列轉換二叉搜尋樹【檢視解法】LeetCode
- 有序表和搜尋二叉樹二叉樹
- LeetCode 33——搜尋旋轉排序陣列LeetCode排序陣列
- leetcode-1382. 將二叉搜尋樹變平衡LeetCode
- LeetCode 81——搜尋旋轉排序陣列 IILeetCode排序陣列
- LeetCode33. 搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode#33搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode33 搜尋旋轉排序陣列LeetCode排序陣列
- leetCode33搜尋旋轉排序陣列LeetCode排序陣列
- 466. 使用快慢指標把有序連結串列轉換二叉搜尋樹指標
- Java將地圖轉換為陣列[Snippet]Java地圖陣列
- Java如何將字串轉換為字元陣列?Java字串字元陣列
- leetcode, LC68:旋轉排序陣列搜尋LeetCode排序陣列
- Java中將 int[] 陣列 轉換為 List(ArrayList)Java陣列
- 將兩個有序陣列合併為一個有序陣列陣列
- Leetcode 700. 二叉搜尋樹中的搜尋(DAY 2)LeetCode
- JavaScript將陣列轉換為字串JavaScript陣列字串
- Leetcode 演算法題解系列 - 二維陣列快速查詢元素(二叉搜尋樹)LeetCode演算法陣列
- 將字串陣列轉換為浮點數陣列字串陣列
- LeetCode 95 | 構造出所有二叉搜尋樹LeetCode
- LeetCode98. 驗證二叉搜尋樹LeetCode
- LeetCode-098-驗證二叉搜尋樹LeetCode
- LeetCode-099-恢復二叉搜尋樹LeetCode
- 【LeetCode】98. 驗證二叉搜尋樹LeetCode
- LeetCode-096-不同的二叉搜尋樹LeetCode
- LeetCode-173-二叉搜尋樹迭代器LeetCode