LeetCode108 將有序陣列轉換為二叉搜尋樹

2022-07-08 09:42:11 字數 884 閱讀 2139

非商業,leetcode鏈結附上:

進入正題。

題目:

將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。

本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。

示例:

給定有序陣列: [-10,-3,0,5,9],

乙個可能的答案是:[0,-3,9,-10,null,5],它可以表示下面這個高度平衡二叉搜尋樹: 

0

/ \-3 9

/ /

-10 5

**實現:

class solution 

public treenode helper(int nums, int left, int right)

int mid = left + (right - left) / 2;

treenode root = new treenode(nums[mid]);

root.left = helper(nums, left, mid - 1);

root.right = helper(nums, mid + 1, right);

return root;

}}//時間複雜度:o(n),其中 n 是陣列的長度;空間複雜度o(logn)

分析:

有序陣列,考慮二分;

以上解法「總是選擇中間位置左邊的數字作為根節點」;

通過遞迴的方式:1.確定返回條件 2.找到中間節點的索引 3.構造中間節點 4.構造中間節點對應的左、右節點(此處進行遞迴操作) 5.返回根節點

--end

LeetCode108 將有序陣列轉換為二叉搜尋樹

將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10...

LeetCode108 將有序陣列轉換為二叉搜尋樹

將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10...

leetcode108 將有序陣列轉換為二叉搜尋樹

將有序陣列轉換為二叉搜尋樹。難度 簡單。將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面...