一个ESP8266的小项目
https://blog.csdn.net/shitou123xsx/article/details/90550098
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#define ElemType int
enum {
L=0,
R
};
//二叉树的存储结构
typedef struct BitNode {
ElemType data;
struct BitNode *lchild,*rchild;
}BitNode,*PBitNode;
//初始化二叉树
PBitNode InitBitNode(void)
{
PBitNode B = (PBitNode)malloc(sizeof(BitNode));
if (B == NULL)
return NULL;
else
{
B->lchild = NULL;
B->rchild = NULL;
B->data = 0;
return B;
}
}
//在书中增加新的节点
bool AddBitNode(PBitNode B, ElemType e, int pos)
{
//判断B是否为空
if (B == NULL)
return false;
//申请空间
PBitNode p = (PBitNode)malloc(sizeof(BitNode));
if (p == NULL)
return false;
//储存
p->data = e;
p->lchild = NULL;
p->rchild = NULL;
if ((pos == L)&&(B->lchild==NULL)) //需要判断当前左右孩子指针为空 否则程序在运行过程中会造成浪费的内存空间
B->lchild = p;
else if ((pos == R) && (B->rchild == NULL))
B->rchild = p;
else
{
free(p);
return false;
}
return true;
}
//给二叉树中增加元素 使深度为3 满二叉树
bool BitNodeRun(PBitNode B,int num)
{
static ElemType i = 0;
if (B == NULL)
return false;
if (num <= 0)
return false;
AddBitNode(B, i++, L);
BitNodeRun(B->lchild, num - 1);
AddBitNode(B, i++, R);
BitNodeRun(B->rchild, num - 1);
return true;
}
//先序遍历二叉树
bool PreOrder(PBitNode B)
{
if (B != NULL)
{
printf("%d ", B->data);
PreOrder(B->lchild);
PreOrder(B->rchild);
}
}
int main()
{
PBitNode B = InitBitNode();
BitNodeRun(B, 4, L);
PreOrder(B);
getchar();
getchar();
return 0;
}