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

2021-09-29 00:26:59 字數 660 閱讀 4515

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

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

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

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

0

/ \-3 9

/ /

-10 5

二叉搜尋樹的中序遍歷剛好可以輸出乙個公升序陣列。所以題目給出的公升序陣列就是二叉搜尋樹的中序遍歷。

通過中序遍歷加前序遍歷或者中序遍歷加後序遍歷來還原一棵樹。然後根據根節點,就可以遞迴的生成左右子樹。

平衡二叉樹,既然要做到平衡,我們只要把根節點擊為陣列的中點即可。

綜上,和之前一樣,找到了根節點,然後把陣列一分為二,進入遞迴即可。注意這裡的邊界情況,包括左邊界,不包括右邊界。

public treenode sortedarraytobst

(int

nums)

public

static treenode tobst

(int nums,

int left,

int right)

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

示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10 5大致思路,二叉搜尋樹的特性就是根節點的左子樹中的數都小於根節點,右子樹都大於根節點。這就想到了用二分法,找到中間的數,則這個數左邊的數比它小,右邊數比...

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

題目 將有序陣列轉換為二叉搜尋樹 力扣 108 將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。分析二叉樹中序遍歷的逆序。找到陣列的中間位置,作為根節點,這時將陣列分為2個部分,遞迴實現節點構建...

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

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