您的位置:首页 > 理论基础 > 数据结构算法

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

2016-08-08 17:39 417 查看


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

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

题目描述

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

输入

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

输出

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

示例输入

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

示例输出

cbegdfa
cgefdba
3
5
#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;}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: