[SDUT](2136)数据结构实验之二叉树的建立与遍历 ---- 二叉树
2017-11-12 20:40
615 查看
Problem Description
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。
Input
输入一个长度小于50个字符的字符串。
Output
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
Example Input
abc,,de,g,,f,,,
Example Output
cbegdfa
cgefdba
3
5
AC代码:
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。
Input
输入一个长度小于50个字符的字符串。
Output
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
Example Input
abc,,de,g,,f,,,
Example Output
cbegdfa
cgefdba
3
5
AC代码:
#include<bits/stdc++.h> using namespace std; typedef struct Node { struct Node *lchild,*rchild; char data; }node; char tr[55]; int i; int sum = 0; node *creatTree() { node *tmp; if(tr[i] == ',') { tmp = NULL; i++; } else { tmp = (node *)malloc(sizeof(node)); tmp->data = tr[i]; i++; tmp->lchild = creatTree(); tmp->rchild = creatTree(); } return tmp; } void InOrder(node *t) { if(t!=NULL) { InOrder(t->lchild); cout<<t->data; InOrder(t->rchild); } } void PostOrder(node *t) { if(t!=NULL) { PostOrder(t->lchild); PostOrder(t->rchild); cout<<t->data; } } void Leaf(node *t) //求叶子节点个数 { if(t == NULL) return; else { if(t->lchild == NULL && t->rchild == NULL) sum++; Leaf(t->lchild); Leaf(t->rchild); } } int Height(node *t) //求二叉树深度 { int left; int right; if(t == NULL) return 0; else { left = Height(t->lchild); right = Height(t->rchild); return (left>right)?(left+1):(right+1); } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL),cout.tie(NULL); i = 0; cin>>tr; node *root = creatTree(); InOrder(root); cout<<endl; PostOrder(root); cout<<endl; Leaf(root); cout<<sum<<endl; cout<<Height(root)<<endl; return 0; }
相关文章推荐
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- SDUT-2136数据结构实验之二叉树的建立与遍历
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- SDUT-2136 数据结构实验之二叉树的建立与遍历
- SDUT-2136 数据结构实验之二叉树的建立与遍历
- sdut 2136 数据结构实验之二叉树的建立与遍历(二叉树遍历,叶子数和深度)
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- 暑假集训 8.8 sdut2136 数据结构实验之二叉树的建立与遍历
- sdut 2136 数据结构实验之二叉树的建立与遍历
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- SDUT 216 数据结构实验之二叉树的建立与遍历
- 【二叉树的建立和遍历】SDUTOJ 2136---数据结构实验之二叉树的建立与遍历
- acm sdut 数据结构实验之二叉树的建立与遍历
- SDUT 216 数据结构实验之二叉树的建立与遍历
- SDUTOJ 2136 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 2136数据结构实验之二叉树的建立与遍历
- 2136-->数据结构实验之二叉树的建立与遍历
- SDUT-数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历