輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
1. 將左子樹構造成雙鏈表,並返回煉表頭節點。
2. 定位至左子樹雙鏈表最後乙個節點。
3. 如果左子樹煉表不為空的話,將當前root追加到左子樹鍊錶。
4. 將右子樹構造成雙鏈表,並返回煉表頭節點。
5. 如果右子樹煉表不為空的話,將該鍊錶追加到root節點之後。
6. 根據左子樹鍊錶是否為空確定返回的節點。
/* function treenode(x) */
function
convert
(prootoftree)
var left =
convert
(prootoftree.left)
;var p = left;
while
(p !=
null
&& p.right !=
null)if
(left !=
null
)var right =
convert
(prootoftree.right);if
(right !=
null
)return left !=
null
? left : prootoftree;
}
/* function treenode(x) */
function
convert
(prootoftree)
p = stack.
pop();
if(isfirst)
else
p = p.right;
}return prootoftree
}
26 二叉搜尋樹與雙向鍊錶
題目 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶,要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的特點是左子樹的值小於等於根結點,右子樹的值大於等於根結點 每個節點都有指向左子結點的指標和指向右子結點的指標 雙向鍊錶結點的結構 pprev data pnext...
26 二叉搜尋樹與雙向鍊錶
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的中序遍歷是從小到大排序的。所以得利用中序遍歷,將左指標指向前乙個元素,右指標指向下乙個元素。所以需要遞迴裡需要有乙個變數表示前乙個節點。注意,需要用指標的指標,否則值傳...
26 二叉搜尋樹與雙向鍊錶
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。python class treenode def init self,x self.val x self.left none self.right none param prootof...