題目描述:
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
題解:
(1)中序遍歷搜尋二叉樹,並依次將結點存入list。
(2)遍歷list,改變其指向。
public treenode convert
(treenode prootoftree)
arraylist
list =
newarraylist
<
>()
;inordercovert
(prootoftree,list)
;return resultcovert (list);}
// 按中序遍歷順序,即二叉搜尋樹的大小順序將各結點儲存至 list
public
void
inordercovert
(treenode root,arraylist
list)
list.
add(root);if
(root.right != null)
}// 遍歷list,修改指標
public treenode resultcovert
(arraylist
list)
return list.get (0)
;}
JZ26 劍指offer 二叉搜尋樹與雙向鍊錶
題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。struct treenode class solution pre prootoftree convert prootoftree left return pre 思路 st...
26 二叉搜尋樹與雙向鍊錶
題目 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶,要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的特點是左子樹的值小於等於根結點,右子樹的值大於等於根結點 每個節點都有指向左子結點的指標和指向右子結點的指標 雙向鍊錶結點的結構 pprev data pnext...
26 二叉搜尋樹與雙向鍊錶
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的中序遍歷是從小到大排序的。所以得利用中序遍歷,將左指標指向前乙個元素,右指標指向下乙個元素。所以需要遞迴裡需要有乙個變數表示前乙個節點。注意,需要用指標的指標,否則值傳...