二叉樹轉雙向列表 仿寫。

2021-07-12 02:28:13 字數 1241 閱讀 1974

仿寫了乙個二叉樹轉雙向列表。核心思想就是記錄中序排序和快取上乙個指標。

#include "stdafx.h"

#includestruct binanrytree

;binanrytree* inserttree(binanrytree* p_tree, int value)

if (p_tree->value > value)

else

return p_tree;

}/*對樹中資料的操作*/

void operate(int value)

void show_tree(binanrytree* p_tree)

/*調換下面三個順序,實現前中後序遍歷*/

show_tree(p_tree->p_right);

operate(p_tree->value);

show_tree(p_tree->p_left);

}void tree_to_list(binanrytree* p_tree, binanrytree* last_node)

tree_to_list(p_tree ->p_left , last_node);

if (last_node != null)

last_node = p_tree;

if (p_tree->p_right != null) }

struct list

;binanrytree* get_head(binanrytree* p_tree)

if (p_tree->p_right == null)

return get_head(p_tree->p_right);

}void show_list(binanrytree* p_list)

}int main()

; binanrytree* p_tree = null;

for (int i = 0; i < 8; i++)

show_tree(p_tree);

binanrytree* p_head = null;

binanrytree* last_node = null;

p_head = get_head(p_tree);

tree_to_list(p_tree, last_node);

printf("\n\r");

show_list(p_head);

return 0;

}

二叉樹轉雙向鍊錶

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 將上一步找出的節點和...

二叉樹轉雙向鍊錶

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