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

2021-06-15 09:26:34 字數 693 閱讀 6541

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

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

10/ \

6 14

/ \ / \

4 8 12 16

轉換成雙向鍊錶

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

首先我們定義的二元查詢樹節點的資料結構如下:

struct bstreenode

;bstreenode *head=null,*iphin=null;

void newset(bstreenode *&rode,int val) //建立二叉樹,注意由於下面指標值會發生改變,所以使用引用傳遞

else if(rode->m_nvalue>val)

else if(rode->m_nvaluem_pright,val); }}

void convert(bstreenode *&rode) //調整節點指標

else

iphin->m_pright=rode; //使雙向鍊錶中最後乙個結點的右指標指向當前結點

iphin=rode; //將當前結點設為雙向鍊錶中最後乙個結點

cout}void find(bstreenode *rode) //中序遍歷查詢二叉樹,注意這裡是指標傳遞,而上面是引用傳遞

int main()

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

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...