当前位置: 首页 > news >正文

L3-010 是否完全二叉搜索树 - 题解与完整代码

PTA L3-010 是否完全二叉搜索树 - 题解与完整代码

📌 题目概述

题目要求我们根据给定的一整型序列,按照特定的规则建立一棵二叉搜索树(BST),并判断该树是否为完全二叉搜索树
最后需要输出这棵树的层序遍历序列,以及判断结果(是则输出YES,否则输出NO)。

建树规则:

  • 左子树的键值大于根结点的键值
  • 右子树的键值小于等于根结点的键值

💡 解题思路

这里提供一种非常巧妙且代码量极小的解法——利用一维数组存储二叉树

  1. 数组表示二叉树
    对于一棵二叉树,如果将其各个节点从上至下、从左至右从1开始编号,那么对于编号为p的节点:

    • 其左孩子节点的编号一定是2 * p(代码中表示为p << 1
    • 其右孩子节点的编号一定是2 * p + 1(代码中表示为(p << 1) + 1
  2. 建树过程 (bd函数)

    • 从根节点(编号1)开始插入。
    • 如果当前位置为空,则将其置为插入的数值。
    • 如果插入的值大于当前节点值,递归到左孩子p << 1
    • 否则(小于等于当前节点值),递归到右孩子(p << 1) + 1
  3. 如何输出层序遍历并判断完全二叉树?

    • 层序遍历:由于我们是用数组按层序的方式对树进行索引存储的,因此直接从下标1开始遍历数组,如果该位置有值,就直接输出即可。这就是天然的层序遍历序列!
    • 完全二叉树判断:在一棵拥有$n$个节点的完全二叉树中,节点必定会紧凑地填满数组的1n的位置。也就是说,数组中出现的最大非空下标必然刚好等于nnn。如果最大非空下标大于nnn,说明中间存在空缺位置,这棵树就不是完全二叉树。

💻 C++ 完整代码实现

#include<bits/stdc++.h>#defineintlonglong#defineendl"\n"#definelcp<<1// 左孩子编号#definerc(p<<1)+1// 右孩子编号usingnamespacestd;inttr[1010];// 用数组模拟二叉树,最大节点数和深度不会导致下标很大时适当放大即可// 插入节点建立二叉树voidbd(intp,intx){if(tr[p]==0){tr[p]=x;return;}// 左子树大于根节点if(x>tr[p]){bd(lc,x);}// 右子树小于等于根节点else{bd(rc,x);}}signedmain(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);intn;cin>>n;for(inti=1;i<=n;i++){intx;cin>>x;bd(1,x);// 从根节点依次插入}boolfl=0;intmx=0;// 记录存在的最大索引// 遍历整个数组来输出层序遍历结果并找最大索引for(inti=1;i<=1000;i++){if(tr[i]){if(fl)cout<<" ";fl=1;cout<<tr[i];mx=i;}}cout<<"\n";// 判断是否为完全二叉分类树if(mx==n)cout<<"YES";elsecout<<"NO";return0;}

📝 总结

使用数组建树完美契合了本题“层序遍历”和“完全二叉树判断”两项需求,省去了传统的队列层序遍历过程,使得代码极其精简。

http://www.jsqmd.com/news/460999/

相关文章:

  • OpenClaw变现实录:从“养龙虾“到可持续盈利的实践指南
  • L3-040 人生就像一场旅行 - 题解与完整代码
  • 2026年湖北力矩限制器实力厂家全景扫描与深度解析 - 2026年企业推荐榜
  • 桌面通用(全架构)【IE浏览器内核插件与 Chrome 内核浏览器插件的区别及兼容性分析】技术文章
  • 2026年武汉平移门选购指南:五大服务商深度解析 - 2026年企业推荐榜
  • 服务器通用(全架构)【服务器存储系统原理与运维实践解析】技术文章
  • 2026年知名的奶油风全屋定制品牌推荐:秦皇岛新中式全屋定制精选厂家 - 品牌宣传支持者
  • 服务器通用(全架构)【页缓存(Page Cache)原理与运维实践分析】技术文章
  • 2026年初环氧地坪漆直销厂家测评:谁值得信赖? - 2026年企业推荐榜
  • 2026年湖北卷帘门选购指南:专业平台与优质服务商解析 - 2026年企业推荐榜
  • 2026年武汉租车市场专业连锁店深度评测与选型指南 - 2026年企业推荐榜
  • Python:collections.Counter 常用函数及应用
  • 华为OD机考双机位C卷 - 单核CPU任务调度 (Java)
  • 2026精选除醛药剂厂家/除味药剂厂家:宁波极微纳,用专业打造品质 - 栗子测评
  • 2026年湖北地区耐用翻板车库门平台综合选购指南 - 2026年企业推荐榜
  • 华为OD机考双机位C卷 - 卡牌游戏 (Java)
  • 2026年化肥销售厂家深度盘点:如何选择靠谱的合作伙伴? - 2026年企业推荐榜
  • 2026铝溶胶厂家/拟薄水铝石厂家推荐:精选宁波极微纳领衔 - 栗子测评
  • 2026年伸缩门选购指南:知名品牌与服务商综合推荐 - 2026年企业推荐榜
  • # MAUI 跨平台开发新范式:用 .NET 6+ 实现原生体验与高效调试的完美平衡在移动应用开发领域,
  • 2026年武汉会议租车公司推荐,这5家口碑最佳 - 2026年企业推荐榜
  • **Zephyr 系统下嵌入式开发实战:从驱动到应用层的完整流程设计与代码实现**在物联网快速发展的今
  • 益阳短视频运营服务团队深度评测:2026年初至今口碑推荐榜单 - 2026年企业推荐榜
  • 2026年Q1湘潭短视频运营公司盘点与联系指南 - 2026年企业推荐榜
  • 2026年初宁夏AI推广市场:五大服务商深度剖析与可靠之选 - 2026年企业推荐榜
  • 服务提供商被黑 爱立信美国公司数据遭泄露
  • **状态通道实战:用Solidity实现高效链下交易的去中心化金融架构**在以太坊生态中,**状态通道
  • 基于BS的企业财务管理信息系统的设计与实现 计算机软件毕业设计
  • 20260310紫题训练
  • 2026年Q1汽车陪练服务商综合评测与可靠推荐 - 2026年企业推荐榜