数据结构实验之二叉树四:(先序中序)还原二叉树
来源:互联网 发布:租书软件 编辑:程序博客网 时间:2024/06/11 20:19
Problem Description
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。
Input
输入数据有多组,每组数据第一行输入1个正整数N(1 <= N <= 50)为树中结点总数,随后2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区分大小写)的字符串。
Output
输出一个整数,即该二叉树的高度。
Example Input
9 ABDFGHIECFDHGIBEAC
Example Output
5
#include<stdio.h>#include<string.h>#include<stdlib.h>#define ERROR -1#define OK 1typedef char TElemtype;typedef int Statu;typedef struct BiTnode{ TElemtype data; struct BiTnode *lchild, *rchild;}BiTnode, *BiTree;int Prin(BiTree T); //求深度BiTree CreateBiTree(TElemtype pre[], TElemtype inorder[], int len); //建树int main(){ char inorder[55], pre[55]; int n; while(~scanf("%d", &n)) { scanf("%s%s", pre, inorder); BiTree T; T = CreateBiTree(pre, inorder, n); n = Prin(T); printf("%d\n", n); } return 0;}int Prin(BiTree T){ int d, l, r; if(!T) //节点为空时此节点深度为0 d = 0; else { l = Prin(T -> lchild); r = Prin(T -> rchild); d = 1 + (l > r ? l : r); //根节点的深度为左子树 右子树较大的深度加一 } return d;}BiTree CreateBiTree(TElemtype pre[], TElemtype inorder[], int len){ int i; if(!len) { return NULL; } BiTree T; for(i = 0; i < len; i++) { if(pre[0] == inorder[i]) break; } T = (BiTree)malloc(sizeof(BiTnode)); T -> data = pre[0]; T -> lchild = CreateBiTree(pre + 1, inorder, i); T -> rchild = CreateBiTree(pre + 1 + i, inorder + 1 + i, len - i - 1); return T;}
阅读全文
0 0
- 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- SDUT3343数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- SDUT3343数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- Trapping Rain Water--LeetCode
- WebService的简单实现
- 猜数字游戏的提示
- unity打包xcode,在iOS11设备调试报错
- (对拍配套)随机生成数据
- 数据结构实验之二叉树四:(先序中序)还原二叉树
- Spring Boot干货——(六)SpringBoot整合mybatis
- 前端面试常见问题——字符串反转
- HDU1573 X问题
- 实验报告七:将menu设计为可重用的子系统
- 如何写出无法维护的代码
- 数组(三)--打印数组
- 冒泡排序
- 设置Access-Control-Allow-Origin,解决多域名跨域问题