YTU 3025: 创建二叉树
原文链接:https://www.dreamwings.cn/ytu3025/2628.html
3025: 创建二叉树
时间限制: 1 Sec 内存限制: 128 MB
提交: 3 解决: 3
题目描述
已知一颗二叉树的中序序列为cbedahgijf,后序序列为cedbhjigfa,给出二叉树的树形表示(用括号法)。
输入
输出
输出带有括号与字母的用括号法表示的二叉树。
提示
首先根据中序序列和后序序列画出二叉树,然后用括号法表示之。
利用中序序列与后序序列构造二叉树,然后采用括号表示法输出!
AC代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Node { char data; Node *lc; Node *rc; } Node; Node *CreateBT2(char *post,char *in,int n) { Node *b; int r,k; char *p; if(n<=0)return NULL; r=*(post+n-1); //定位到当前区间最后一个地址,根节点 b=(Node*)malloc(sizeof(Node)); b->data=r; //开始创建 for(p=in; p<in+n; p++) if(*p==r)break; k=p-in; //定位根节点在中序遍历中的位置 b->lc=CreateBT2(post,in,k); b->rc=CreateBT2(post+k,p+1,n-k-1); return b; } void Print(Node *b) { if(b!=NULL) { printf("%c",b->data); if(b->lc!=NULL||b->rc!=NULL) { printf("("); Print(b->lc); if(b->rc!=NULL)printf(","); Print(b->rc); printf(")"); } } } int main() { int len; Node *head; char post[30]="cedbhjigfa",in[30]="cbedahgijf"; // 存储先序和中序遍历的序列 head=(Node*)malloc(sizeof(Node)); len=strlen(post); head=CreateBT2(post,in,len); //构造二叉树 Print(head); //用括号表示法输出二叉树 return 0; }
YTU 3025: 创建二叉树的更多相关文章
- 非递归创建二叉树( C++队列 )
非递归按照 层序 创建二叉树,利用 队列(即可先进先出特点)存放已访问的结点元素的地址. 初始化:front=rear= -1: 每储存一个结点元素 rear+1 ,利用 rear%2==0 来使 f ...
- 创建二叉树,C语言实现
一.前序遍历创建二叉树,使用递归,头文件 BiTree.h /*槽点一:创建树时用scanf输入不成功*/ #ifndef BITREE_H #define BITREE_H #include< ...
- c/c++ 用前序和中序,或者中序和后序,创建二叉树
c/c++ 用前序和中序,或者中序和后序,创建二叉树 用前序和中序创建二叉树 //用没有结束标记的char*, clr为前序,lcr为中序来创建树 //前序的第一个字符一定是root节点,然后去中序字 ...
- c++实现二叉树层序、前序创建二叉树,递归非递归实现二叉树遍历
#include <iostream> #include <cstdio> #include <stdio.h> #include <string> # ...
- java创建二叉树并实现非递归中序遍历二叉树
java创建二叉树并递归遍历二叉树前面已有讲解:http://www.cnblogs.com/lixiaolun/p/4658659.html. 在此基础上添加了非递归中序遍历二叉树: 二叉树类的代码 ...
- 递归------python实现列表创建二叉树
# -*- coding:utf-8 -*- '二叉树结点类' class TreeNode: def __init__(self, x): self.val = x self.left = None ...
- 先序遍历创建二叉树,对二叉树统计叶子节点个数和统计深度(创建二叉树时#代表空树,序列不能有误)c语言
#include "stdio.h" #include "string.h" #include "malloc.h" #define NUL ...
- c使用二叉链表创建二叉树遇到的一些疑问和思考
二叉链表存储二叉树 学习的时候参考的是<大话数据结构>,书中是这样定义的 typedef char TElemType; typedef struct BiTNode { TElemTyp ...
- 用c语言实现前序创建二叉树(递归),分别用前序,中序,后序遍历,以及分别输出节点个数和叶子节点个数
本人c语言小白一枚,近期在学习数据结构(c语言版),特写此随笔,做一些总结和分享,如有不当之处,请各位技术大牛斧正 首先我们用一个结构体来抽象树的结点,代码如下(这里我们存放的数据为char型,大家可 ...
随机推荐
- spring security方法一 自定义数据库表结构
Spring Security默认提供的表结构太过简单了,其实就算默认提供的表结构很复杂,也无法满足所有企业内部对用户信息和权限信息管理的要求.基本上每个企业内部都有一套自己的用户信息管理结构,同时也 ...
- SQL存储过程生成顺序编码
一.第一种方式 USE [WJKC]GO/****** Object: StoredProcedure [dbo].[Address_GetCode1] Script Date: 2016/3 ...
- Lambda表达式公共拼接函数(原创)
#region Lambda公共拼接函数 /// <summary> /// LambdaWhere(枚举) /// </summary> public enum Lambda ...
- 利用box-flex实现 dom元素位置页面底部
问题: 总是有这样的需求,就是页面上某部分要位于页面的最底部,此“最底部”要求:(1)当页面上内容不足一屏的时候,在最底部显示(2)当页面上内容不止一屏的时候,也就是有垂直滚动条的时候,要在内容的最后 ...
- poj1006-Biorhythms(中国剩余定理)
一,题意:右上角中文.二,思路: 1,由题意得出方程组 2,利用中国剩余定理求解 3,求出最小正整数三,步骤: 1,由题意得出方程组 (n+d) % 23 = p ; (n+d) % 28 = e ; ...
- HDU 1160 FatMouse's Speed(要记录路径的二维LIS)
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- app与后台通信协议
通用的语言有很多种,例如英语和中文,在网络的通讯中,通用的协议有很多,其中http是被最广泛使用的.如果是私有的协议,那就只能自己设计了. 用http是最方便的,如果是私有协议,包含协议的封装和拆解, ...
- CentOS下搭建nginx+php环境
一.下载安装nginx 参见 http://www.cnblogs.com/kreo/p/4378086.html 不再赘述 二.下载php #下载 wget http://bg2.php.net/d ...
- 《MongoDB 权威指南》 学习总结
书目 http://baike.baidu.com/link?url=DVJuvrT4ssbM8V1pKcoRx5H1CwRRCynC6_Ix6YWIrr414opislflpPuY9hRDO4g ...
- 蓝牙--对象交换协议(OBEX)
1.OBEX协议概述 OBEX是IrOBEX的简称,IrOBEX协议是红外数据协会IrDA开发的用于红外数据链路上数据对象交换的会话层协议.OBEX是一种紧凑高效的二进制协议,功能类似于HTTP协议. ...