#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include"Queue.h"
typedef int BTDataType;
typedef struct BinaryTreeNode
{
BTDataType data;
struct BinaryTreeNode* left;
struct BinaryTreeNode* right;
}BTNode;
BTNode* BuyNode(BTDataType x)
{
BTNode* node = (BTNode*)malloc(sizeof(BTNode));
if (node == NULL)
{
perror("malloc fail\n");
return NULL;
}
node->data = x;
node->left = node->right = NULL;
return node;
}
BTNode* CreateBinaryTree()
{
BTNode* node1 = BuyNode(1);
BTNode* node2 = BuyNode(2);
BTNode* node3 = BuyNode(3);
BTNode* node4 = BuyNode(4);
BTNode* node5 = BuyNode(5);
BTNode* node6 = BuyNode(6);
node1->left = node2;
node1->right = node4;
node2->left = node3;
node4->left = node5;
node4->right = node6;
return node1;
}
//层序遍历
void LevelOrder(BTNode* root)
{
Queue q;
QueueInit(&q);
if (root)
{
QueuePush(&q, root);
}
while (!QueueEmpty(&q))
{
BTNode* front = QueueFront(&q);
QueuePop(&q);
printf("%d ", front->data);
if (front->left)
{
QueuePush(&q, front->left);
}
if (front->right)
{
QueuePush(&q, front->right);
}
}
printf("\n");
QueueDestroy(&q);
}
//判断完全二叉树
bool BTreeComplete(BTNode* root)
{
Queue q;
QueueInit(&q);
if (root)
{
QueuePush(&q, root);
}
//该循环作用就是找到空节点
while (!QueueEmpty(&q))
{
BTNode* front = QueueFront(&q);
QueuePop(&q);
//遇到空就跳出
if (front == NULL)
{
break;
}
QueuePush(&q, front->left);
QueuePush(&q, front->right);
}
//该循环检查后面的节点有没有非空
//有非空,就不是完全二叉树
while (!QueueEmpty(&q))
{
BTNode* front = QueueFront(&q);
QueuePop(&q);
if (front)
{
QueueDestroy(&q);
return false;
}
}
QueueDestroy(&q);
//前面代码走完了都没有return,说明第一个空节点之后的节点均为空节点~
return true;
}
int main()
{
BTNode* root = CreateBinaryTree();
LevelOrder(root);
printf("%d", BTreeComplete(root));
}
没有合适的资源?快使用搜索试试~ 我知道了~
C语言编程之完全二叉树的层序遍历
共19个文件
vsidx:4个
ipch:4个
suo:3个
需积分: 0 0 下载量 179 浏览量
2023-12-09
17:24:24
上传
评论
收藏 2.51MB ZIP 举报
温馨提示
C语言编程之完全二叉树的层序遍历 C语言编写的程序代码工程,包括源代码工程文件BinaryTree.vcxproj和解决方案文件BinaryTree.sln 可使用visual studio工具打开,直接编译生成并发布可执行exe文件;也可使用.c和.h文件手动编译。
资源推荐
资源详情
资源评论
收起资源包目录
1.binary-tree-test.zip (19个子文件)
binary-tree-test
test.c 2KB
BinaryTree.suo 18KB
.vs
二叉树层序遍历
v17
Preview
Browse.VC.db 1.73MB
ipch
AutoPCH
3c0eb5ec04e94a29
TEST.ipch 2.63MB
ec8a0109428a2203
TEST.ipch 2.63MB
8b6d7382cbd04e1c
QUEUE.ipch 2.13MB
34fda31de4a37e2a
QUEUE.ipch 2.13MB
.suo 37KB
FileContentIndex
2d4349a6-6777-4807-8c0a-f4358873c641.vsidx 15KB
read.lock 0B
05145eb5-a428-422e-b49c-bff19672e540.vsidx 4KB
22c58604-8d65-4004-98c5-1ac4c975332f.vsidx 4KB
a8ab2772-4e21-405f-8812-b00831b1208d.vsidx 5KB
Queue.c 1KB
BinaryTree.sdf 2.19MB
BinaryTree.vcxproj 7KB
BinaryTree.sln 1KB
Queue.h 508B
BinaryTree.v12.suo 19KB
共 19 条
- 1
资源评论
yellow1019
- 粉丝: 49
- 资源: 102
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功