原文链接: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: 创建二叉树的更多相关文章

  1. 非递归创建二叉树( C++队列 )

    非递归按照 层序 创建二叉树,利用 队列(即可先进先出特点)存放已访问的结点元素的地址. 初始化:front=rear= -1: 每储存一个结点元素 rear+1 ,利用 rear%2==0 来使 f ...

  2. 创建二叉树,C语言实现

    一.前序遍历创建二叉树,使用递归,头文件 BiTree.h /*槽点一:创建树时用scanf输入不成功*/ #ifndef BITREE_H #define BITREE_H #include< ...

  3. c/c++ 用前序和中序,或者中序和后序,创建二叉树

    c/c++ 用前序和中序,或者中序和后序,创建二叉树 用前序和中序创建二叉树 //用没有结束标记的char*, clr为前序,lcr为中序来创建树 //前序的第一个字符一定是root节点,然后去中序字 ...

  4. c++实现二叉树层序、前序创建二叉树,递归非递归实现二叉树遍历

    #include <iostream> #include <cstdio> #include <stdio.h> #include <string> # ...

  5. java创建二叉树并实现非递归中序遍历二叉树

    java创建二叉树并递归遍历二叉树前面已有讲解:http://www.cnblogs.com/lixiaolun/p/4658659.html. 在此基础上添加了非递归中序遍历二叉树: 二叉树类的代码 ...

  6. 递归------python实现列表创建二叉树

    # -*- coding:utf-8 -*- '二叉树结点类' class TreeNode: def __init__(self, x): self.val = x self.left = None ...

  7. 先序遍历创建二叉树,对二叉树统计叶子节点个数和统计深度(创建二叉树时#代表空树,序列不能有误)c语言

    #include "stdio.h" #include "string.h" #include "malloc.h" #define NUL ...

  8. c使用二叉链表创建二叉树遇到的一些疑问和思考

    二叉链表存储二叉树 学习的时候参考的是<大话数据结构>,书中是这样定义的 typedef char TElemType; typedef struct BiTNode { TElemTyp ...

  9. 用c语言实现前序创建二叉树(递归),分别用前序,中序,后序遍历,以及分别输出节点个数和叶子节点个数

    本人c语言小白一枚,近期在学习数据结构(c语言版),特写此随笔,做一些总结和分享,如有不当之处,请各位技术大牛斧正 首先我们用一个结构体来抽象树的结点,代码如下(这里我们存放的数据为char型,大家可 ...

随机推荐

  1. php date()获取的时间不对解决办法

    因为php默认获取的是格林威治时间,与北京时间相差8小时. 我们要获取到北京时间有两个办法: 1.修改php.ini配置文件: 打开php.ini文件,一般在php配置根目录下,找到其中的 ;date ...

  2. 全选,不选,反选js

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  3. cloudsim安装,配置(到eclipse)

    现在基本成功了.所以将这个过程尽量详细的,准确的分享出来,以供大家的需要.       一.Jdk,Eclipse的安装与配置. 本人下载的jdk版本是1.8,jdk的相关配置网上有很多,我就不赘述了 ...

  4. php for循环嵌套

    <?php     //2.打印一个50*50的 'o' 的正方形方整, 使用for的嵌套     // oooooo     // oooooo     // oooooo //for循环嵌套 ...

  5. jsp\struts1.2\struts2 中文件上传(转)

    jsp\struts1.2\struts2 中文件上传 a.在jsp中简单利用Commons-fileupload组件实现 b.在struts1.2中实现c.在sturts2中实现现在把Code与大家 ...

  6. A trip through the Graphics Pipeline 2011_11 Stream Out

    Welcome back! This time, the focus is going to be on Stream-Out (SO). This is a facility for storing ...

  7. DotNetBar中ListViewEx控件的使用

    最近一直在学习DotNetBar,今天遇到的问题是ListView的使用问题,其实没有特别难的,只是写在这里给自己留个记录. 首先,在Form中添加一个ListViewEx控件, 初始化中写代码如下: ...

  8. 无法启动Mysql服务,错误InnoDB: Attempted to open a previously opened tablespace.

    2013-08-04 13:48:22 760 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous t ...

  9. 10与元素亲密接触:盒元素(the box model)

    line-height属性可以设置文本的行间距,可以用像素.em或百分比等于字体大小有关的值定义行间距line-height: 1.6em;(行间距为字体大小的1.6倍) CSS把每一个单一的元素看作 ...

  10. 【五子棋AI循序渐进】——开局库

    首先,对前面几篇当中未修复的BUG致歉,在使用代码时请万分小心…………尤其是前面关于VCF\VCT的一些代码和思考,有一些错误.虽然现在基本都修正了,但是我的程序还没有经过非常大量的对局,在这之前,不 ...