LC 有序鍊錶變成二叉搜尋樹

2021-10-25 08:54:46 字數 695 閱讀 1499

//有序鍊錶變成二叉搜尋樹

/*給定乙個單鏈表,其中的元素按公升序排序,請將它轉化成平衡二叉搜尋樹(bst)*/

/*由於二分查詢法每次需要找到中點,而鍊錶的查詢中間點可以通過快慢指標來操作。

找到中點後,要以中點的值建立乙個數的根節點,然後需要把原鍊錶斷開,

分為前後兩個鍊錶,都不能包含原中節點,然後再分別對這兩個鍊錶遞迴呼叫原函式,

分別連上左右子節點即可。*/

#include

using

namespace std;

struct treenode };

struct listnode

;class

solution

treenode*

tobst

(listnode* head, listnode* tail)

treenode* root =

newtreenode

(slow-

>val)

; root-

>left =

tobst

(head, slow)

; root-

>right =

tobst

(slow-

>next, tail)

;return root;}}

;

有序鍊錶轉換二叉搜尋樹

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