数据结构-二叉树-建立,输出,计算长度-C++

来源:互联网 发布:手机qq java 编辑:程序博客网 时间:2024/06/09 22:54
#include<iostream>#include<stdlib.h>using namespace std;typedef struct BTNode BTNode;struct BTNode{     int ch;    BTNode * left;    BTNode * right;};// 创建一个二叉树 先序输入 0表示NULL BTNode * creatBTNode(){    BTNode * p;    int ch;    cin>>ch;    if(ch ==0){        p=NULL;    }    else{        p=(BTNode *)malloc(sizeof(BTNode));        p->ch=ch;        p->left=creatBTNode();        p->right=creatBTNode();    }    return p;}//*****************先序遍历************void  preOrderTraverse(BTNode * node){    if(node){        cout<<node->ch<<' ';        preOrderTraverse(node->left);        preOrderTraverse(node->right);     }}//******************中序遍历**********void inOrderTraverse(BTNode * node){    if(node){        inOrderTraverse(node->left);        cout<<node->ch<<' ';        inOrderTraverse(node->right);    }}//*****************后序遍历输出*******void lastOrderTraverse(BTNode * node){    if(node){        lastOrderTraverse(node->left);        lastOrderTraverse(node->right);        cout<<node->ch<<' ';    }}//****************二叉树节点数目******int  NodeNum(BTNode * node){    if(node==NULL){        return 0;    }    else{        return 1+NodeNum(node->left)+NodeNum(node->right);      } }//*************二叉树深度*************int DepthOfTree(BTNode * node){    if(node){        return DepthOfTree(node->left)>DepthOfTree(node->right)?DepthOfTree(node->left)+1:DepthOfTree(node->right)+1;    }    if(node==NULL){        return 0;    }}//**************二叉树叶子节点数*******int leafNum(BTNode * node){    if(!node){        return 0;    }    else if(node->left==NULL&&node->right==NULL){        return 1;    }    else{        return (leafNum(node->left)+leafNum(node->right));    }}int main(){    BTNode * bttree=creatBTNode();    cout<<"先序遍历输出:"<<endl;    preOrderTraverse(bttree);    cout<<"\n中序遍历输出:"<<endl;    inOrderTraverse(bttree);    cout<<"\n后序遍历输出:"<<endl;    lastOrderTraverse(bttree);    cout<<"\n二叉树节点数目:"<<endl;    cout<<NodeNum(bttree)<<endl;    cout<<"二叉树深度"<<endl;    cout<<DepthOfTree(bttree)<<endl;    cout<<"叶子节点数"<<endl;    cout<<leafNum(bttree)<<endl;    return 0;}

原文:http://blog.csdn.net/ricardo_he/article/details/41119709

原创粉丝点击