二叉树的层序遍历及完全二叉树的判断

news/2024/10/17 21:17:24/

文章目录

1.二叉树层序遍历

2.完全二叉树的判断

文章内容

1.二叉树层序遍历

        二叉树的层序遍历需要一个队列来帮助实现。

        我们在队列中存储的是节点的地址,所以我们要对队列结构体的数据域重定义,

        

 

        以上代码 从逻辑上来讲就是1入队,1出队,2(1的左孩子)入队,4(1的右孩子)入队,2出队......

//层序遍历
void LevelOrder(BTNode* root)
{Que q;QueueInit(&q);if (root){QueuePush(&q,root);}while (!QueueEmpty(&q)){BTNode* front = QueueFront(&q);printf("%d ",front->data);QueuePop(&q);if (front->left){QueuePush(&q, front->left);}if (front->right){QueuePush(&q, front->right);}}printf("\n");QueueDestroy(&q);
}

2.完全二叉树的判断

        完全二叉树的判断和二叉树的层序的思想差不多,都需要借助队列来实现。

 

 

bool TreeComplete(BTNode* root)
{Que q;QueueInit(&q);if (root){QueuePush(&q, root);}while (!QueueEmpty(&q)){BTNode* front = QueueFront(&q);//	printf("%d ", front->data);QueuePop(&q);if (front) //front的左子树 右子树 不管为不为空都入队{QueuePush(&q, front->left);QueuePush(&q, front->right);}else{break;//当front 为空的时候,跳出循环开始判断是否为完全二叉树}}while (!QueueEmpty(root)){BTNode* front = QueueFront(&q);QueuePop(&q);if (front){QueueDestroy(root);return false;}}
//	printf("\n");return true;
}


http://www.ppmy.cn/news/1063090.html

相关文章

记录帖子-开发过程中遇到的问题和感悟记录

记录帖子1:2023年08月25日结束开发 前端规范 1.关于计算属性 计算属性关联的变量不可以过多,同时要保证关联的变量在代码中的变换次数不可过多 例如这段代码的this.options内部数据变化过多,导致计算属性调用次数过多导致页面卡顿 2.关于自定义v-mod…

每日一学——二层交换机

以下是一个简单的二层交换机配置案例,供您参考: 首先,连接您的电脑或终端设备到交换机上的任意一个端口,确保连接正常。 进入交换机的管理界面,一般可以通过浏览器访问交换机的 IP 地址来登录。 在管理界面上&#x…

智慧课堂学生行为检测评估算法

智慧课堂学生行为检测评估算法通过yolov5系列图像识别和行为分析,智慧课堂学生行为检测评估算法评估学生的表情、是否交头接耳行为、课堂参与度以及互动质量,并提供相应的反馈和建议。智慧课堂学生行为检测评估算法能够实时监测学生的上课行为&#xff0…

15.live555mediaserver-rtp打包

live555工程代码路径 live555工程在我的gitee下(doc下有思维导图、drawio图): live555 https://gitee.com/lure_ai/live555/tree/master 章节目录链接 0.前言——章节目录链接与为何要写这个? https://blog.csdn.net/yhb1206/art…

Shell 编程快速入门 之 循环结构详解

1. 求两数之和 整数之和 shell程序的数字类型只有整数类型一种,并不支持浮点数。如: hannHannYang:~$ cat sum.sh #!/bin/bash# 读取第一个数 echo "请输入第一个数:" read a# 读取第二个数 echo "请输入第二个数&#xff…

登录校验-Filter-入门

目录 前言 过滤器(Filter) 快速入门 步骤 详解 登录校验-Filter 具体代码 运行思路 小结 前言 在前面的文章中,我们已经实现了对于用户登陆成功后,生成并下发令牌返回至前端等功能接口的实现,JWT令牌就是用户…

几个nlp的小任务(抽取式问答)

几个nlp的小任务(抽取式问答) 安装库抽取式问答介绍、SQuAD数据集初始化参数加载、导入数据集查看数据集示例加载tokenizer对长文本处理的演示对答案的位置进行验证整合刚才的步骤对数据集中的数据进行预处理加载微调模型设置args 参数使用数据清洗设置训练函数,开始训练安装…

A股自动交易,自动止盈止损,自动打板

一、前言 炒股的都知道,股市里最难克服的就是人性。开发这个项目的初衷即是想通过机器来克服人性的弱点。因为只要把策略定好,机器会无条件挂单。该止损止损,该止盈止盈。 短线的话卖比买更重要:复盘就会发现,大的亏…