二叉樹搜尋樹轉換成排序雙向鍊錶

2021-09-28 13:10:34 字數 552 閱讀 3774

題目描述

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

先簡單說一說二叉搜尋樹,二叉搜尋樹有乙個特點:根大於左子樹,小於右子樹。二叉搜尋樹的中序遍歷是有序的序列。

如下的一棵搜尋二叉樹:

轉換成有序雙向鍊錶就要對搜尋二叉樹進行中序遍歷

雙向鍊錶結點的prev可以理解成二叉樹的left,next理解成right。

中序遍歷的時候需要prev對上乙個結點記錄

void

_convert

(treenode* root, treenode*

&prev)

treenode*

convert

(treenode* prootoftree)

return head;

}

二叉樹搜尋樹轉換成排序雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。void convert treenode root,treenode prev convert root left,prev root left prev if prev 一開始不需要...

二叉搜尋樹轉換成排序雙向鍊錶

因為二叉樹中,每個結點都有兩個指向子節點的指標。在雙向鍊錶中也有兩個指標,它們分別指向前乙個和後乙個結點。由於這兩種結點的結構相似,同時二叉搜尋樹也是一種排序的資料結構,因此在理論上可能實現二叉搜尋樹和排序鍊錶的雙向鍊錶的轉換。在搜尋二叉樹中,左子節點的值總小於父節點的值,右子節點的值總是大於父節點...

二叉搜尋樹轉換成雙向鍊錶

問 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。public class treenode public class solution 如果已經遍歷到葉子節點,則將最後的節點轉變成葉子節點 if prootoftree.left ...