今天来总结一下二叉树构建的方法:
这是二叉树系列文章的第一篇,对于二叉树的定义、概念就不过多叙述,先从二叉树的构建来总结,如果缺少理论知识,无论是程杰的《大话数据结构》还是严蔚敏经典教材数据结构(C语言版)
标题说了这里的代码是可以运行的,但是我们核心代码是需要其他代码来支撑的,如果需要调试请先贴进去必要的代码:这里包括:二叉树的设计、节点的获取和释放、二叉树的遍历(后面会继续写文章单独介绍)有了这些函数,才能保证运行成功:
# include <stdio.h>
# include <stdlib.h>
# include <malloc.h>
# include <memory.h>
# include <string.h>
//二叉树设计
typedef char ElemType;
#define END '#'
typedef struct BtNode//二叉树节点类型
{
struct BtNode *leftchild;
struct BtNode *rightchild;
ElemType data;
}BtNode,*BinaryTree;
/*
为什么使用Buynode?
有可能不是直接malloc是从自己内存池购买节点,可以换掉malloc、free
也有可能申请时内存不足,方便增加代码,以解决内存不足的解决方案
*/
struct BtNode * Buynode()
{
struct BtNode *s=(struct BtNode*)malloc(sizeof(struct BtNode));
if(NULL==s)exit(1);
memset(s,0,sizeof(struct BtNode));
return s;
}
void Freenode (str