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