有序鍊錶轉換為二分查詢樹

2021-09-26 02:00:17 字數 772 閱讀 7630

給出乙個所有元素以公升序排序的單鏈表,將它轉換成一棵高度平衡的二分查詢樹

樣例 1:

輸入: array = [1,2,3]

輸出:2

/ \1 3

樣例 2:

輸入: [2,3,6,7]

輸出:3

/ \2 6\7

解釋:可能會有多個符合要求的結果,返回任意乙個即可。

/**

* definition of listnode

* class listnode

* }* definition of treenode:

* class treenode

* }*/class solution

treenode* creat(listnode* head, listnode* tail)

else if(head == tail)

listnode* slow = head;

listnode* fast = head;

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

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

cur->left = creat(head, slow);

cur->right = creat(slow->next, tail);

return cur;

}};

排序列表轉換為二分查詢樹

開始接觸鍊錶問題。從朋友那得到指導,喚醒了以前的記憶,鍊錶還是手動加上head比較好處理。返回的時候返回head next比較好。此題用遞迴即可,快慢指標的應用,可以找到鍊錶中點,如果不用手動加head的方法處理起來就異常艱難。另外遞迴也好久沒寫遺忘了。寫一下備忘。第一次寫的時候 slow next...

題目 排序列表轉換為二分查詢樹

給出乙個所有元素以公升序排序的單鏈表,將它轉換成一棵高度平衡的二分查詢樹 您在真實的面試中是否遇到過這個題?樣例 標籤 expand 相關題目 expand 解題思路 遞迴 鍊錶操作即可。definition for listnode.public class listnode definition...

排序列表轉換為二分查詢樹 LintCode

描述 給出乙個所有元素以公升序排序的單鏈表,將它轉換成一棵高度平衡的二分查詢樹 樣例 2 1 2 3 1 3 思路 折半取煉表中的元素作為其根節點,左半部分作為其左子樹,右半部份作為其右子樹。不斷遞迴。相比於陣列轉換二叉查詢樹,多了些 鍊錶的遍歷而已。ac definition of listnod...