博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
根据先序遍历和中序遍历创建二叉树(代码)
阅读量:5307 次
发布时间:2019-06-14

本文共 941 字,大约阅读时间需要 3 分钟。

先声明一个结构体:二叉树的三个元素,数据域,左子树,右子树。

typedef char ElemType;typedef struct Node {    ElemType data;    struct Node *lchild,*rchild;}BitTree;
声明函数:返回值:二叉树
     pre:先序遍历字符串
     in:中序遍历字符串
     number:字符串长度
BitTree *createBinTreeByPreIn(char *pre,char *in,int number);
 
二叉树问题我喜欢使用递归方法解决,实现起来比较简单,但是效率可能有点低。
使用递归时最重要的一个就是结束条件,下面是具体实现。
结束条件:当字符串长度为0。
BitTree *createBinTreeByPreIn(char *pre,char *in,int number){    if(number==0)  return NULL;    char c = pre[0];    int i = 0;    while(i
data = c; node->lchild = createBinTreeByPreIn(&pre[1],&in[0],leftNumber); node->rchild = createBinTreeByPreIn(&pre[leftNumber+1],&in[leftNumber+1],rightNumber); return node;}

最后主函数测试一下:

int main(int argc,char **argv){    char a[SIZE],b[SIZE];    BitTree *p;    while(scanf("%s%s",a,b)!=EOF)    {        p = createBinTreeByPreIn(a,b,strlen(a));        printf("\n");    }    return 0;}

 

 

转载于:https://www.cnblogs.com/wzqstudy/p/10081585.html

你可能感兴趣的文章
弄个知乎的粒子动态背景_实践particles.js
查看>>
js定时器
查看>>
完美解决linux系统sublime不能输入中文
查看>>
数据结构算法 (树 的基本算法)
查看>>
smb
查看>>
Oracle中的SQL分页查询原理和方法详解
查看>>
多线程编程(六)-Executor与ThreadPoolExecutor的使用
查看>>
[LeetCode#259] 3Sum Smaller
查看>>
[主席树]ZOJ2112 && BZOJ1901 Dynamic Rankings
查看>>
打水漂_洛谷U3553_不知道怎么分类的分类
查看>>
jquery 选择器,模糊匹配
查看>>
jQuery
查看>>
正则表达式-趣现象一则
查看>>
HDOJ/HDU 2562 奇偶位互换(交换位置~)
查看>>
mongodb----基础描述及安装
查看>>
AngularJS1.X学习笔记7-过滤器
查看>>
Memcache遍历查询所有键值的方法
查看>>
【转】apache与tomcat的区别
查看>>
削笔补习
查看>>
Gdb debug 多线程
查看>>