把排序陣列轉換為高度最小的二叉搜尋樹

2021-07-30 23:11:35 字數 719 閱讀 8066

問題描述:

給乙個排序陣列(從小到大),將其轉換為一棵高度最小的排序二叉樹。

注意事項

there may exist multiple valid solutions, return any of them.

樣例給出陣列[1,2,3,4,5,6,7], 返回

4

/ \

2 6

/ \ / \1 3 5 7

解題思路:

首先弄清楚二叉搜尋樹的定義,左子樹上的數值必須比根節點的數值小,右子樹上的數值必須比根節點的數值大。將給定的陣列二分,最中間的是根節點的數值,從陣列最前面到陣列中間的前乙個數放在左子樹中,中間的後乙個數一直到最後乙個數放在右子樹中。然後再分別對陣列的前一部分和後一部分二分,前一部分二分後放入左子樹的左子樹和右子樹中,後一部分二分後放入右子樹的左子樹和右子樹中,依次遞迴下去。

**實現:

/*** definition of treenode:

* class treenode

* }*/

class solution

treenode* func(vector&a,int start,int end)};

解題感悟:

一開始不知道二叉搜尋樹是怎麼產生的,知道原理後就好做了。

把排序陣列轉換為高度最小的二叉搜尋樹

問題描述 給乙個排序陣列 從小到大 將其轉換為一棵高度最小的排序二叉樹。注意事項there may exist multiple valid solutions,return any of them.樣例 給出陣列 1,2,3,4,5,6,7 返回 4 2 6 1 3 5 7 思路 用陣列的中間值作...

把排序陣列轉換為高度最小的二叉搜尋樹

1.問題描述 給乙個排序陣列 從小到大 將其轉換為一棵高度最小的排序二叉樹。注意事項 there may exist multiple valid solutions,return any of them.2.思路 樣例給出陣列 1,2,3,4,5,6,7 返回 4 2 6 1 3 5 7 要建立一...

把排序陣列轉換為高度最小的二叉搜尋樹

題目描述 把排序陣列轉換為高度最小的二叉搜尋樹 問題描述 給乙個排序陣列 從小到大 將其轉換為一棵高度最小的排序二叉樹。思路 直接採用中間值來作為二叉樹的根節點 將原陣列分成左右均等或者相差乙個數的兩個新陣列 然後遞迴的對這兩個新陣列進行相同的處理。class solution int start ...