刷演算法 二叉搜尋樹與雙向鍊錶

2021-09-11 12:12:47 字數 498 閱讀 4010

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。

如果是這樣一棵二叉搜尋樹:

那麼它對應的雙向鍊錶順序為:

1 3 4 5 7 10 11 15

複製**

仔細觀察發現這個序列和樹的中序遍歷是一樣的,所以演算法就好寫了,先中序遍歷得到乙個序列,然後再按照雙向鍊錶的指標規則鏈結起來即可。

/* function treenode(x)  */

function convert(r)

else

}r = q.shift();

r.left = null;

r.right = null;

var tail = r;

cur = null;

while(q.length !== 0)

return r;

}複製**

演算法 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。二叉樹類public class treenode 分析 二叉搜尋樹的定義 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它...

二叉搜尋樹與雙向鍊錶

1.問題描述 輸入一顆二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。來自 劍指offer 2.分析 對於二叉搜尋樹我們知道,樹的左孩子都比根節點要下,樹的右孩子都比根結點要大,根據這個特點,我們進行中序遍歷得到的序列就會滿足題目的要求,我們...

二叉搜尋樹與雙向鍊錶

問題描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。演算法 struct binarytreenode binarytreenode convert binarytreenode prootoftree plastnodeinl...