輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
**********python**********
#class treenode:
#def __init__(self, x):
#self.val = x
#self.left = none
#self.right = none##
#@param prootoftree treenode類
#@return treenode類
#class
solution:
def__init__
(self):
self.head =none
self.pre =none
defconvert(self , prootoftree ):
#write code here
defdfs(prootoftree):
if prootoftree is
none:
return
dfs(prootoftree.left)
prootoftree.left =self.pre
ifself.pre:
self.pre.right =prootoftree
self.pre =prootoftree
if self.head is
none:
self.head =prootoftree
dfs(prootoftree.right)
dfs(prootoftree)
return self.head
**********j**a*****====
publicclass
treenode
}public
class
solution
private
void
converthelper(treenode node)
converthelper(node.left);
node.left =pre;
if (pre != null
) pre =node;
if (head == null
) converthelper(node.right);
}}
26 二叉搜尋樹與雙向鍊錶
題目 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶,要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的特點是左子樹的值小於等於根結點,右子樹的值大於等於根結點 每個節點都有指向左子結點的指標和指向右子結點的指標 雙向鍊錶結點的結構 pprev data pnext...
26 二叉搜尋樹與雙向鍊錶
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的中序遍歷是從小到大排序的。所以得利用中序遍歷,將左指標指向前乙個元素,右指標指向下乙個元素。所以需要遞迴裡需要有乙個變數表示前乙個節點。注意,需要用指標的指標,否則值傳...
26 二叉搜尋樹與雙向鍊錶
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。1.將左子樹構造成雙鏈表,並返回煉表頭節點。2.定位至左子樹雙鏈表最後乙個節點。3.如果左子樹煉表不為空的話,將當前root追加到左子樹鍊錶。4.將右子樹構造成雙鏈表,並返回煉表頭節點。...