04-1 还原二叉树
来源:互联网 发布:mac 外接显卡坞价格 编辑:程序博客网 时间:2024/06/05 11:54
给定一棵二叉树的先序遍历序列和中序遍历序列,要求二叉树的高度。
我们知道先序遍历的第一个结点必然是跟结点,可以在中序遍历中找到这个根结点的位置,于是就知道在中序遍历中,根结点左边的所有结点一定属于左子树,右边的所有结点一定属于右子树
求二叉树的高度。如果我们已经知道左,右子树的高度,那么树的高度就是左右子树的高度中大的加1.所以我们就可以通过递归来实现。
#include<stdio.h>#include<stdlib.h>#define MAXN 50//树的基本结构 typedef struct TreeNode *BinTree;struct TreeNode{ char Data; BinTree Left; BinTree Right;};BinTree CreateBinTree(char *Pre,char *In,int Len){ BinTree T; int i; if(!Len) return NULL; T = (BinTree)malloc(sizeof(struct TreeNode)); T->Data = Pre[0]; for(i=0;i<Len;i++) { if(Pre[0] == In[i]) break; } T->Left = CreateBinTree(Pre+1,In,i); T->Right = CreateBinTree(Pre+i+1,In+i+1,Len-i-1); return T; }//通过后序遍历求树高 int Height(BinTree T){ int THeight,LHeight,RHeight; if(!T){ return THeight = 0; } else{ LHeight = Height(T->Left); RHeight = Height(T->Right); THeight = (LHeight>RHeight)?LHeight:RHeight; THeight++; } return THeight;}int main(){ int N; char Pre[MAXN+1],In[MAXN+1]; BinTree T = NULL; scanf("%d",&N); scanf("%s\n%s",Pre,In); T = CreateBinTree(Pre,In,N); printf("%d\n",Height(T)); return 0;}
0 0
- 04-1 还原二叉树
- 5-1 还原二叉树 (25分)
- 还原二叉树
- 二叉树还原
- 还原二叉树
- 二叉树的还原
- pta 还原二叉树
- 还原二叉树
- 还原二叉树
- 还原二叉树
- 还原二叉树
- 数据结构--还原二叉树
- 还原二叉树
- 还原二叉树
- 还原二叉树
- 二叉树还原
- 还原二叉树
- 二叉树的还原
- python 调用 C++ code
- 查看进程命令
- ubuntu14.04 安装搜狗输入法
- android的actionbar为什么一直去不掉
- 批量替换和转移目录的东东
- 04-1 还原二叉树
- HDU 4326 Game(概率DP+高斯消元)
- SQLServer varbinary 存储16进制末尾的"0"丢失
- ubuntu14.04 安装Flash Player
- mysql -u root -p 出错(ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/li)
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-15-Advanced Activation Layers
- React-Native android在windows下的踩坑记
- C++常见容器概述
- 开始灌水了