樹的遍歷(各種樹)

2021-08-28 06:48:31 字數 670 閱讀 8212

1.靜態寫法

struct node

node[maxn];//結點陣列,maxn為結點上限個數

當需要新建乙個結點時,就按順序從陣列中取出乙個下標即可,與二叉樹的靜態實現類似

int index = 0;

int newnode(int v)

不過一般涉及(非二叉樹)的考查時,一般都給出結點的編號;

2,樹的先根遍歷(其實和dfs的結果是一樣的,符合dfs的都可以轉換為樹的先根遍歷)

這個遍歷和二叉樹的先序遍歷是一樣的思路,可以用遞迴實現

void pre(int root)

}

3.樹的層序遍歷(其實bfs的求解符合都可以轉換為樹的層序遍歷)

void lay(int root)

}}

當需要對結點的層號求解,只需要在結構體裡增加個變數layer即可

struct node

node[maxn];//結點陣列,maxn為結點上限個數

需要在結點入隊前先令根結點layer的值為1

void lay(int root)

}}

各種樹的構建方法

已知先序中序構樹 include include using namespace std const int n 50 int pre n in n post n 存放先序,中序,後序的陣列 int n 樹中元素個數 struct node node create int prel,int prer...

各種樹 trie樹 B樹 B 樹 B 樹 B 樹

紅黑樹rbtree 二叉排序樹 map 就是採用紅黑樹儲存的,紅黑樹 rb tree 是平衡二叉樹,其優點就是樹到葉子節點深度一致,查詢的效率也就一樣,為logn.在實行查詢,插入,刪除的效率都一致,而當是全部靜態資料時,沒有太多優勢,可能採用hash表各合適。hash map是乙個hash tab...

二叉樹的各種遍歷

二叉樹 struct treenode void createtree treenode root 樹遞迴先序遍歷 void preorder treenode root 現將根節點入棧,然後以棧空為條件不斷出棧,每齣棧乙個元素,將其右孩子壓入棧,左孩子壓入棧 void nonrecursionpr...