二叉樹建立(先序)

2021-09-25 08:08:35 字數 842 閱讀 3536

建立二叉樹可根據輸入乙個串先序、中序或後序建立,如本篇中以1 2 4 -1 -1 -1 3 5 -1 -1 -1為例,數字-1為空結點,先序、中序、後序沒什麼太大區別,僅僅時對結點資料賦值的時間不同,建立運用遞迴思想。遍歷可先、中、後序,也可層序遍歷。層序遍歷可以運用佇列,每pop出乙個資料,push進相應的左右孩子。本篇中我佇列用的stl模板,佇列中存放每個結點指標,個人覺得這樣更簡單也更方便理解。

建立結點

#include#include#include#includeusing namespace std;//1 2 4 -1 -1 -1 3 5 -1 -1 -1

int cout=0;

typedef struct nodetree,*btree;

先序建立二叉樹

int createtree(node* &root)//先序建立二叉樹,設定當輸入數字為-1時為空結點  

else

return cout;//設定全域性變數cout記錄新創結點數

}

遍歷:

void firstfind(node* &root)//先序遍歷 

}void middlefind(node* &root)//中序遍歷

}void lastfind(node* &root)//後序遍歷

}void everyfind(node* &root)//層序遍歷(stl模板建立指標佇列,每乙個指標入隊時,當左右孩子存在,壓其入隊)

}

主函式:

int main()

二叉樹 二叉樹遍歷 根據先序建立二叉樹

題目描述 編乙個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立乙個二叉樹 以指標方式儲存 例如如下的先序遍歷字串 abc de g f 其中 表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結輸入 輸入包括1行字串,長度不超過100。輸出 可能有多組測試資...

先序構建二叉樹及先序遍歷二叉樹

先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...

先序構建二叉樹及先序遍歷二叉樹

先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...