二叉树的实现(数据结构+C语言)

这篇博客介绍了如何使用C语言实现二叉树的创建、销毁、节点计数、叶子节点计数、第k层节点计数、查找指定值节点、计算深度以及前中后序遍历。此外,还讨论了层序遍历和判断二叉树是否为完全二叉树的方法,所有操作均基于前序遍历的存储方式。
摘要由CSDN通过智能技术生成

一.主函数调用

a.我们使用数组存储二叉树中的所有结点,以前序遍历的方式存储(下面创建的时候就必须采用前序的方式创建二叉树,在数组中的存储方式必须和创建时的方式相同)空结点以#表示.在主函数中我们只需定义一个指针用来存储根节点就行,根据根节点我们便可以访问到二叉树中的所有结点.

//主函数
int main(){
  BTDataType str[]="ABD##E#H##CF##G##";
  int num=0;
  int k=0;
  char x,Empty;
  BTNode* root;
  root=CreateBinaryTree(str,strlen(str),&num);
  printf("层序遍历为:");
  BinaryTreeLevelOrder(root);
  printf("结点个数为:%d\n",BinaryTreeSize(root));
  printf("叶子结点个数为:%d\n",BinaryTreeLeafSize(root));
  printf("请输入k=");
  scanf("%d",&k);
  printf("第%d层节点的个数为:%d\n",k,BinaryTreeLevelKSize(root,k));
  Empty=getchar();
  printf("请输入x=");
  scanf("%c",&x);
  printf("以%c为根的树中总共有%d个节点\n",x,BinaryTreeSize(BinaryTreeFind(root,x)));
  printf("二叉树的深度为:%d\n",BinaryTreeDepth(root));
  printf("%d\n",BinaryTreeComplete(root));
  BinaryTreeDestory(&root);
  return 0;
}

二.创建二叉树

a.首先是二叉树的建立我们采用的递归的方式进行二叉树的创建.

结构体类型:

typedef struct BinaryTreeNode{
  BTDataType _data;//数据域
  struct BinaryTreeNode* _left;//存储左孩子
  struct BinaryTreeNode* _right;//存储右孩子
}BTNode;

采用前序遍历创建二叉树:

b.我们这里来看看三个参数,第一个参数为存储二叉树节点的数组,第二个参数为数组的长度,第三个参数用来判断

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆陆陆ovo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值