建立二叉樹可根據輸入乙個串先序、中序或後序建立,如本篇中以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 ...