劍指offer之二叉搜尋樹與雙向鍊錶 C

2021-10-10 23:05:34 字數 748 閱讀 1678

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

本題的實質是二叉搜尋樹的中序遍歷,附帶雙向鍊錶的構建。我採取的方法是先獲取搜尋樹的中序遍歷,訪問各結點的指標,然後構建雙向鍊錶。二叉搜尋樹的中序遍歷我採用的是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...