利用有序陣列 鍊錶重構二叉搜尋平衡樹

2021-08-29 22:37:33 字數 657 閱讀 6267

因為二叉搜尋樹中序遍歷的結果就是乙個從小到大排列的陣列,因此陣列的中間位置的值,就是二叉搜尋樹的根節點的值;

再依次採用遞迴,分別構建左右子樹。

鍊錶和陣列的不同在於,陣列可以直接索引找到元素,查詢方便,鍊錶不能夠直接定位到某乙個元素;所以要採用鍊錶自己的方法,求中間位置;斷開鍊錶;進行迭代

鍊錶解法的難點:

1.斷開鍊錶:採用雙指標思路

2.查詢鍊錶中間節點位置的表達法

3.新建樹節點值

class solution 

public treenode minbst(int nums,int start,int end)

}

/**

* definition for singly-linked list.

* public class listnode

* }*//**

* definition for a binary tree node.

* public class treenode

* }*/class solution

public listnode findpre(listnode head)

return pre;

}}

108,109 有序陣列 鍊錶轉換二叉搜尋樹

給定乙個單鏈表 陣列,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 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 3 9 10...

有序鍊錶轉換二叉搜尋樹

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