26 二叉搜尋樹與雙向鍊錶

2021-10-02 06:53:21 字數 987 閱讀 1845

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

1. 將左子樹構造成雙鏈表,並返回煉表頭節點。

2. 定位至左子樹雙鏈表最後乙個節點。

3. 如果左子樹煉表不為空的話,將當前root追加到左子樹鍊錶。

4. 將右子樹構造成雙鏈表,並返回煉表頭節點。

5. 如果右子樹煉表不為空的話,將該鍊錶追加到root節點之後。

6. 根據左子樹鍊錶是否為空確定返回的節點。

/* function treenode(x)  */

function

convert

(prootoftree)

var left =

convert

(prootoftree.left)

;var p = left;

while

(p !=

null

&& p.right !=

null)if

(left !=

null

)var right =

convert

(prootoftree.right);if

(right !=

null

)return left !=

null

? left : prootoftree;

}

/* function treenode(x)  */

function

convert

(prootoftree)

p = stack.

pop();

if(isfirst)

else

p = p.right;

}return prootoftree

}

26 二叉搜尋樹與雙向鍊錶

題目 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶,要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的特點是左子樹的值小於等於根結點,右子樹的值大於等於根結點 每個節點都有指向左子結點的指標和指向右子結點的指標 雙向鍊錶結點的結構 pprev data pnext...

26 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的中序遍歷是從小到大排序的。所以得利用中序遍歷,將左指標指向前乙個元素,右指標指向下乙個元素。所以需要遞迴裡需要有乙個變數表示前乙個節點。注意,需要用指標的指標,否則值傳...

26 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。python class treenode def init self,x self.val x self.left none self.right none param prootof...