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

2021-07-02 00:41:17 字數 1303 閱讀 5758

這些演算法的思路很多我不會的話都參考了july演算法的思想,特此宣告一下,我只是給出我的具體實現**!

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

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

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

10/ \

6 14

/ \ / \

4 8 12 16

轉換成雙向鍊錶

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

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

struct bstreenode;

用的遞迴思想,對於每個節點,相當於連線他左子樹的最大節點和右子樹的最小節點

#include #include struct bstreenode * createtree();

struct bstreenode * treetolist(struct bstreenode * root);

void recursion(struct bstreenode *& head, struct bstreenode *& tail, struct bstreenode * root);

void print(struct bstreenode * root);

void printtree(struct bstreenode * root);

struct bstreenode

;int main()

head = treetolist(root);

print(head);

return 0;

}struct bstreenode * createtree()

return root;

}struct bstreenode * treetolist(struct bstreenode * root)

void recursion(struct bstreenode *& head, struct bstreenode *& tail, struct bstreenode * root)

recursion(head, ll, root->lchild);

recursion(rr, tail, root->rchild);

if(ll != null) else

if(rr != null) else

}void print(struct bstreenode * head)

void printtree(struct bstreenode * root)

}

列印地方是除錯用的~

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

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

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

輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6 8 10 12 14 16。include include typedef struct bstreenode bstreenode t...