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

2021-08-27 23:50:03 字數 951 閱讀 8098

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

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

示例:給定的有序鍊錶: [-10, -3, 0, 5, 9],

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

0

/ \ -3

9/ /

-105

分析,題目要求將乙個已公升序排序的鍊錶表示為一棵平衡的二叉搜尋樹。對於二叉搜尋樹,左子樹的值小於根結點,右子樹的值大於根結點,所以找到鍊錶的中間節點就是二叉搜尋樹的根結點,求鍊錶中間節點可以用快慢指標,之後遞迴處理左右部分。

/**

* definition for singly-linked list.

* struct listnode

* };

*//**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

treenode* build(listnode* start, listnode* end)

listnode* fast = start;

listnode* slow = start;

while(fast != end && fast->next != end)

treenode* node = new treenode(slow->val);

node->left = build(start, slow);

node->right = build(slow->next, end);

return node;

}};

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

這道題是將有序鍊錶轉化成高度平衡的二叉查詢樹。於是晚上用自己的電腦,重新在本地編譯器上手打了一遍再提交突然就好了 emmm mark一下,可能是一些格式問題吧。definition for singly linked list.class listnode def init self,x self....

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

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

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

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