這是一道挺有趣的題,其解題的思路主要還是二叉樹的中序遍歷
先建立乙個頭結點list,然後通過中序遍歷二叉樹,把結點串起來即可!
注意點:
1、需要有乙個指標來指向上乙個已遍歷過的結點
2、如果不建立頭結點,在後面遍歷判斷時比較麻煩
#includeusing
namespace
std;
struct
node;
//建立二叉樹
node *createtree()
//先序遍歷二叉樹
void showtreexian(node*root)
//p,為上乙個已遍歷過的結點,初始化為空頭結點,二叉樹轉雙向鍊錶
void treetolist(node *root,node *&p)
//雙向鍊錶的遍歷
void showlist(node *root)
cout
<<"
從右到左:
"
lchild!=null) }int
main()
二叉樹轉雙向鍊錶
include using namespace std 樹節點 struct node typedef struct node link 構造樹 void insert tree link h,int t if h val t insert tree h left,t else insert tre...
二叉樹轉雙向鍊錶
1.a 遞迴轉化左子樹為雙向鍊錶 1.b 找出根結點的前驅節點 是左子樹的最右的節點 1.c 將上一步找出的節點和根結點連線起來 2,如果右子樹不為null,處理右子樹 和上面的很類似 1.a 遞迴轉化右子樹為雙向鍊錶 1.b 找出根結點的後繼節點 是右子樹的最左的節點 1.c 將上一步找出的節點和...
程式設計練習 二叉樹(二叉樹轉雙向鍊錶)
1.把二元查詢樹轉變成排序的雙向鍊錶 題目 輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6 8 10 12 14 16。首先我們定義的二元查詢樹 節點的資料結構如下 struct bs...