二叉树(C语言版)

一、定义

二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree),其存储结构为链式存储,如下图所示。
在这里插入图片描述

代码实现

typedef char BTDataType;//下面要实现的例子中存储的数据为char型

typedef struct BinaryTreeNode 
{  
   BTDataType _data;  //存储此节点的数据
   struct BinaryTreeNode* lchild;  //存储左孩子的地址
   struct BinaryTreeNode* rchild; //存储右孩子的地址
}BTNode;

在这里插入图片描述

BTNode* BinaryTreeCreate(BTDataType* src);
    //通过前序遍历的数组"ABDG##H#J###CE##FI###"构建二叉树
    {
          static int s_n = 0;//定义静态变量记录数组下标
		  if(src[s_n]=='#')//
		  {
			  s_n++;//下标+1,递归进入直接访问下一个
		     return NULL;
		  }
		  BTNode* cur = (BTNode*)malloc(sizeof(BTNode));
		  cur->_data = src[s_n];
		  s_n++;//下标+1,递归进入直接访问下一个
		  cur->lchild = BinaryTreeCreate(src);//左右孩子递归访问
          cur->rchild = BinaryTreeCreate(src);
		  return cur;
    }
void BinaryTreeDestory(BTNode* root)//销毁二叉树
{
	if (root != NULL)
	{
		BinaryTreePostOrder(root->lchild);
		BinaryTreePostOrder(root->rchild);
		free(root);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值