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

2021-06-23 10:05:04 字數 621 閱讀 3310

題目:

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

分析:因為二叉搜尋樹就是乙個排序的,最後要求輸出乙個排序的雙向鍊錶,其實只要畫圖就能看出裡面的規律,這個題的規律很好得出來,但是其中的**實現是相當困難的,至少我能**表達出來,哎!基本功相當不紮實啊,還得好好練。

下面說一下思路吧

我們來看根節點,根結點的左指標應該指向他左子樹中最大的元素,也就是8,他的右指標應該指向右子樹中最小的元素12.其餘的結點我們可以用遞迴來實現了,每乙個結點都是一樣的。如果想排序,我們知道二叉搜尋樹的中序遍歷結果就是排好序的,所以遞迴實現二叉搜尋樹的中序遍歷就能解決問題了。

下面是**:

binarytreenode* convert(binarytreenode* prootoftree)

void convertnode(binarytreenode* pnode, binarytreenode** plastnodeinlist)

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

題目 輸入乙個2叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的鍊錶。要求不能建立任何新的節點,只能調整書中節點指標的指向。由於要求轉換後的鍊錶是排序的,而中序遍歷可以從小到大遍歷二叉樹的每個節點,因此可以中序遍歷該二叉樹。當遍歷到根節點時,它的左子樹已經轉換成乙個排序的鍊錶,把鍊錶的最後結點與根節點相連即...

劍指offer 27 二叉樹的映象

宣告 本系列部落格是對何海濤 劍指offer 的關鍵點總結。1.樹的映象 定義 樹的根結點相同,但是左右兩個子節點交換了位置 2.解題思路 1 前序遍歷樹的每乙個結點 2 如果遍歷到的節點有子節點,則交換其左右兩個子節點 3 分別以左子節點和右子節點作為新的根結點,遞迴呼叫該函式 4 當遍歷到的結點...

劍指Offer 27 二叉樹的映象

請完成乙個函式,輸入一棵二叉樹,該函式輸出它的映象。例 8 8 6 10 10 6 5 7 9 11 11 9 7 5交換左右子樹,遍歷至葉節點終止即可。時間複雜度 o n 空間複雜度 o 1 def mirror of binary tree root param root root return...