二叉樹轉雙向鍊錶

2021-05-27 17:10:54 字數 755 閱讀 3233

#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_tree(h->right, t);

}// 二叉樹轉鍊錶

link tree_to_listr(link &h, bool left)

link p = tree_to_list(h->left, true);

link q = tree_to_list(h->right, false);

if (0 == p && 0 == q) return h;

link t, tt;

if (0 != p)

if (0 != q)

while (tt->left != 0) tt = tt->left;

while (t->right != 0) t = t->right;

if (left) return t;

else return tt;

}link tree_to_list(link &h)

int main(int argc, char* argv)

二叉樹轉雙向鍊錶

1.a 遞迴轉化左子樹為雙向鍊錶 1.b 找出根結點的前驅節點 是左子樹的最右的節點 1.c 將上一步找出的節點和根結點連線起來 2,如果右子樹不為null,處理右子樹 和上面的很類似 1.a 遞迴轉化右子樹為雙向鍊錶 1.b 找出根結點的後繼節點 是右子樹的最左的節點 1.c 將上一步找出的節點和...

二叉樹轉雙向鍊錶

這是一道挺有趣的題,其解題的思路主要還是二叉樹的中序遍歷 先建立乙個頭結點list,然後通過中序遍歷二叉樹,把結點串起來即可!注意點 1 需要有乙個指標來指向上乙個已遍歷過的結點 2 如果不建立頭結點,在後面遍歷判斷時比較麻煩 include using namespace std struct n...

程式設計練習 二叉樹(二叉樹轉雙向鍊錶)

1.把二元查詢樹轉變成排序的雙向鍊錶 題目 輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6 8 10 12 14 16。首先我們定義的二元查詢樹 節點的資料結構如下 struct bs...