資料結構之二叉樹的建立與遍曆

來源:互聯網
上載者:User

已知一個按先序序列輸入的字元序列,如abc,,de,g,,f,,,(其中逗號表示空節點)。請建立二叉樹並按中序和後序方式遍曆二叉樹,最後求出葉子節點個數和二叉樹深度。

#include<iostream>#include<queue>#include <cstdlib>#include <cstdio>using namespace std;typedef struct BiNode{char data;struct BiNode *left;struct BiNode *right;}BiNode, *BiTree;int sum = 0;void CreateBinaryTree(BiTree &T)//二叉樹建立   abc,,de,g,,f,,,{//T = (BiNode*) malloc (sizeof(BiNode));T = new BiNode;cin >> T->data;if(T->data == ',') {T = NULL; }if(T != NULL){CreateBinaryTree(T->left);CreateBinaryTree(T->right);}}void PreOrder(BiTree T)//前序走訪{if(T != NULL){cout << T->data;PreOrder(T->left);PreOrder(T->right);}}void InOrder(BiTree T)//中序遍曆{if(T != NULL){InOrder(T->left);cout << T->data;InOrder(T->right);}}void PostOrder(BiTree T)//後序遍曆{if(T != NULL){PostOrder(T->left);PostOrder(T->right);cout << T->data;}}void LevOrder(BiTree T)//層次遍曆{if(T != NULL){BiTree p = T;queue<BiTree>que;que.push(p);while(!que.empty()){p = que.front();cout << p->data;que.pop();if(p->left != NULL){que.push(p->left);}if(p->right != NULL){que.push(p->right);}}}}int Size(BiTree T)//計算二叉樹節點數{if(T){if(T->left == NULL && T->right == NULL){sum++;}Size(T->left);Size(T->right);}return sum;}int Deep(BiTree T)//計算二叉樹深度{int m, n;if(T == NULL) return 0;m = Deep(T->left);n = Deep(T->right);if(m > n) return m + 1;else return n + 1;}int main(void){BiTree T;CreateBinaryTree(T);cout << "前序走訪結果為:" << endl;PreOrder(T);cout << endl << endl;cout << "中序遍曆結果為:" << endl;InOrder(T);cout << endl << endl;cout << "後序遍曆結果為:" << endl;PostOrder(T);cout << endl << endl;cout<<"層次遍曆結果為:"<<endl;LevOrder(T);cout << endl << endl;cout << "二叉樹分葉節點個數為:" << Size(T)<<endl;cout << "二叉樹深度數為:" << Deep(T) << endl;system("pause");return 0;}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.