数据结构实验之二叉树的建立与遍历

来源:互联网 发布:嵌入式网络编程 编辑:程序博客网 时间:2024/06/04 01:10


数据结构实验之二叉树的建立与遍历

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

       已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后方式遍历二叉树最后求出叶子节点个数和二叉树深度

输入

 输入一个长度小于50个字符的字符串。

输出

输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。

示例输入

abc,,de,g,,f,,,

示例输出

cbegdfacgefdba35
#include<bits/stdc++.h>using namespace std;struct node{    char data;    struct node *l;    struct node *r;};struct node *create(struct node *root){    char ch;    cin>>ch;    if(ch==',')        root=NULL;    else    {        root=(struct node*)malloc(sizeof(struct node));        root->data=ch;        root->l=create(root->l);        root->r=create(root->r);    }    return root;}int coun=0;int yezi(struct node *root){    if(root)    {        if(!root->l&&!root->r)            coun++;        yezi(root->l);        yezi(root->r);    }}int deep(struct node *root){    if(!root)        return 0;    else if(!root->l&&!root->r)        return 1;    else return max(deep(root->l),deep(root->r))+1;}void zhongxv(struct node *root){    if(root)    {        zhongxv(root->l);        cout<<root->data;        zhongxv(root->r);    }}void houxv(struct node *root){    if(root)    {        houxv(root->l);        houxv(root->r);        cout<<root->data;    }}int main(){    struct node *root;    root=create(root);    zhongxv(root);    cout<<endl;    houxv(root);    cout<<endl;    yezi(root);    cout<<coun<<endl;    cout<<deep(root)<<endl;    return 0;}

 
0 0