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

2021-10-23 02:49:23 字數 890 閱讀 5264

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

對於二叉搜尋樹要得到乙個排序的雙向鍊錶。

首先,我們知道二叉搜尋樹的中序遍歷得到的序列就是乙個排序的序列。所以我們的**在二叉搜尋樹的中序遍歷上進行修改。

採用的是遞迴的方式,先遍歷左子樹,然後遍歷根結點,然後遍歷右子樹。

遞迴的結束條件是:

如果根結點為空,我們直接返回空結點;

如果根節點的左子樹和右子樹不為空,就直接返回根結點。

先把左子樹轉化為排序的雙向鍊錶,再定位到左子樹鍊錶的末尾,然後和根結點相連。

再把右子樹轉化為排序的雙向鍊錶,再直接將左子樹和根結點相連,就得到了排序的完整的雙向鍊錶。

/**

public class treenode }*/

public

class

solution

if(prootoftree.left==

null

&& prootoftree.right==

null

) left=

convert

(prootoftree.left)

; p=left;

while

(p!=

null

&& p.right!=

null)if

(left!=

null

) right=

convert

(prootoftree.right);if

(right!=

null)if

(left!=

null

)else

}}

劍指offer 二叉搜尋樹與雙向連線

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。普通的二叉樹也可以轉換成雙向鍊錶,只不過不是排序的 思路 與中序遍歷相同 採用遞迴,先鏈結左指標,再鏈結右指標 1,更改doublelinkedlist,最後返回list的第乙...

《劍指offer》 二叉搜尋樹與雙向鍊錶

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。解法 主要應用到二叉樹的中序遍歷。將左子樹遍歷進行不斷壓棧,然後再出棧。用兩個指標,current指向當前的樹的節點,pre指向前乙個節點,然後進行改指標引用,把壓棧的節點進行...

《劍指offer》二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向 輸入一棵二叉搜尋樹 將該二叉搜尋樹轉換成乙個排序的雙向鍊錶 struct treenode class solution 按照中序遍歷,按照左子樹 根節點 右子樹的順序。include ...