二叉树重建(前中序遍历求后序模板刘汝佳小白本)
来源:互联网 发布:ci框架打印sql语句 编辑:程序博客网 时间:2024/05/20 08:01
输入一棵二叉树的先序遍历和中序遍历序列,输出它的后序遍历序列。
输入:
DBACEGF ABCDEFG
BCAD CBAD
输出:
ACBFGED
CDAB
#include<stdio.h>#include<string.h>//s1是先序遍历(根左右),s2是中序遍历(左根右),s是后序遍历(左右根) void build(int n,char *s1,char *s2,char *s)//注意这里的s1,s2,s是指针,n表示树中有多少个结点 { if(n<=0) return; int p=strchr(s2,s1[0])-s2;//s1[0]表示每个树的根结点,在s2指针所指序列中找到根结点的位置 build(p,s1+1,s2,s);//左子树有p个结点,s1+1表示左子树的根结点,左子树在s2中指针位置不变.s表示左子树的根结点(指针起点) build(n-p-1,s1+p+1,s2+p+1,s+p);//右子树有n-p-1个结点,指针像右移p+1在前序遍历中找到右子树根结点对应的数值,中序遍历起点+p+1表示在中序遍历后一串序列中找到根结点位置,s+p表示右子树的根结点(指针起点) s[n-1]=s1[0];//每个树的根结点,左右子树指针起点不同,这句话是单独赋值每个树的根结点 }int main(){ char s1[30],s2[30],s[30]; while(~scanf("%s%s",s1,s2)) { int n=strlen(s1); build(n,s1,s2,s); s[n]='\0'; printf("%s\n",s); } return 0;}
阅读全文
0 0
- 二叉树重建(前中序遍历求后序模板刘汝佳小白本)
- 二叉树- 遍历& 重建
- 二叉树重建及遍历
- 633(二叉树的遍历,二叉树重建)
- 已知二叉树前序中序遍历重建二叉树
- uva11234 Expression (二叉树重建+层次遍历)
- UVA 548(二叉树重建与遍历)
- hihoCoder - 1049 - 后序遍历 (二叉树的重建!!)
- 二叉树的遍历以及重建(Python实现)
- 二叉树遍历模板
- HDU1710 Binary Tree Traversals(二叉树重建模板609)
- 重建二叉树以及树的遍历
- [算法学习]输入遍历重建二叉树
- 二叉树的遍历及重建
- 根据前序中序遍历,重建二叉树
- 二叉树的遍历和重建
- 二叉树重建 - (先序遍历、中序遍历、后序遍历)
- 七:重建二叉树(根据先序遍历(或者后序遍历)和中序遍历重建二叉树)
- uva 11059 Maximum Product
- Hibernate基础知识
- 《VM学习》-01-VM安装失败 “Failed to create the requested registry key Key:installer Error:1021"
- 存储过程
- TCP/IP学习笔记(12)——DNS:域名系统
- 二叉树重建(前中序遍历求后序模板刘汝佳小白本)
- C
- Odoo10实战一:模块创建
- Matlab Bag of Words 图片范畴分类
- 词梯游戏
- 《网易编程题》下厨房
- Java关键字之(static与final)2
- JVM知识总结
- 楼天成回忆录