輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
本題的實質是二叉搜尋樹的中序遍歷,附帶雙向鍊錶的構建。我採取的方法是先獲取搜尋樹的中序遍歷,訪問各結點的指標,然後構建雙向鍊錶。二叉搜尋樹的中序遍歷我採用的是morris演算法,關於morris演算法,csdn中有篇博文講的很詳細,鏈結如下:morris演算法進行二叉樹遍歷 ,各位可前往了解。
/*
struct treenode
};*/
class
solution
treenode *curr = prootoftree;
treenode *pre,
*next;
treenode *head;
while
(curr)
else
if(pre-
>right==
null
)else}}
head = ret[0]
; head-
>left =
null;if
(ret.
size()
==1)else
next-
>right =
null;}
return head;}}
;
劍指offer系列26之二叉搜尋樹與雙向鍊錶
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路一 非遞迴法 非遞迴法主要利用了二叉樹的中序遍歷的非遞迴方法。python實現 coding utf 8 class treenode def init self,x self.va...
劍指offer 之 二叉搜尋樹與雙向鍊錶
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。coding utf 8 class treenode def init self,x self.val x self.left none self.right none 利用根結點與左...
(十九)劍指offer之二叉搜尋樹與雙向鍊錶
題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。struct treenode class solution private void convertnode treenode pnode,treenode plastnod...