leetcode109 有序鍊錶轉換二叉搜尋樹

2021-10-05 10:47:37 字數 898 閱讀 8005

給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。

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

示例:

給定的有序鍊錶: [-10

,-3,

0,5,

9],乙個可能的答案是:[0,

-3,9

,-10, null,5]

, 它可以表示下面這個高度平衡二叉搜尋樹:

0/ \ -39

//-10

5

通過快慢指標找到有序鍊錶的中點,然後將中點位置設定為根節點,左右兩邊為左子樹和右子樹。

右子樹的頭部很容易找,即當前節點的next節點。

左子樹的頭部也很容易找,即為head,但是需要注意,由於節點n是樹的根節點,因此鍊錶中,n的上乙個節點不應該再指向n,應該指向空。因此快慢指標過程中,應該再用乙個變數記錄滿指標的上乙個節點。當找到中間節點n後,讓上乙個節點的next指向空。

class

solution

// 讓上個節點的next指向空

tmp-

>next =

nullptr

; treenode * root =

newtreenode

(last-

>val)

; root-

>left =

sortedlisttobst

(head)

; root-

>right =

sortedlisttobst

(last-

>next)

;return root;}}

;

LeetCode109 有序鍊錶轉換二叉搜尋樹

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

LeetCode 109 有序鍊錶轉換二叉搜尋樹

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

leetcode109 有序鍊錶轉換二叉搜尋樹

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