把二元查詢樹轉變成排序的雙向鍊錶(中序遍歷)

2021-06-23 08:38:04 字數 849 閱讀 2087

題目:

輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。

要求不能建立任何新的結點,只調整指標的指向。

10/ /

6 14

/ / / /

4 8 12 16

轉換成雙向鍊錶

4=6=8=10=12=14=16。

此題實質就是考察遞迴的使用以及樹的遍歷。中序遍歷二元查詢數的結果就是有序的目標節點順序。

只需按中序遍歷的順序把節點鏈結到鍊錶尾端即可。

**:

templatestruct treenode

;// 要求兩個輸出引數要初始化為null

templatevoid convertbstree2list(treenode* ptreeroot/*樹的根節點*/, treenode*& plisthead/*雙向鍊錶的頭指標*/, treenode*& plistlast/*雙向鍊錶的尾指標*/)

// 中序遍歷左子樹

convertbstree2list(ptreeroot->plchild, plisthead, plistlast);

// 處理當前節點,把節點鏈到雙向鍊錶尾部

// 修改當前節點左指標,指向雙向鍊錶尾部

ptreeroot->plchild = plistlast;

if(plistlast) // 非第乙個節點

else // 第乙個節點

plistlast = ptreeroot;

// 中序遍歷右子樹

convertbstree2list(ptreeroot->prchild, plisthead, plistlast);

}

把二元查詢樹轉變成排序的雙向鍊錶

1.首先是如何建立乙個二叉查詢樹 2.再對二叉查詢樹進轉換 如下 bstreenode1.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std struct bstreenode typedef bstreenode doubl...

把二元查詢樹轉變成排序的雙向鍊錶

把二元查詢樹轉變成排序的雙向鍊錶 題目 輸入一棵二元查詢樹,將該轉換成個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標向。include include typedef struct bittree bittree void addnode bittree root,int value p r...

把二元查詢樹轉變成排序的雙向鍊錶

這些演算法的思路很多我不會的話都參考了july演算法的思想,特此宣告一下,我只是給出我的具體實現 把二元查詢樹轉變成排序的雙向鍊錶 題目 輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6...