演算法筆記 有序鍊錶轉換二叉搜尋樹

2021-10-23 11:37:34 字數 576 閱讀 2812

問題:

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

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

思路:

思路很簡單,由於鍊錶不便於查詢元素,我們將鍊錶存入集合中操作,在二叉搜尋樹中,左邊的結點總是小於右邊的結點,剛好和集合元素排列順序符合(題設元素公升序),如果我們使用二分查詢,每次取集合中的中間位置構建結點,就能保證左右子樹均勻分配,又剛好符合平衡樹的特性。

**實現:

class

solution

int n = arr.

size()

;//根結點

treenode root =

helper(0

, n -1)

;return root;

}//引數為集合邊界

public treenode helper

(int left,

int right)

}

時間 o(n)

空間 o(n)

有序鍊錶轉換二叉搜尋樹

題目描述 給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。思路分析 我們可以利用兩個指標來訪問鍊錶中的中間元素。當找到鍊錶中的中間元素後,我們將鍊錶從中間元素的左側斷開,做法是使用乙個...

有序鍊錶轉換二叉搜尋樹

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

有序鍊錶轉換二叉搜尋樹

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