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

树的练习1--------965单值二叉树

前言

终于度过期末周啦,我要尽快把我的节奏调整过来,留给我的时间不多啦,我的学习和生活模式需要大改变,我需要通过自己清晰的头脑,让环境顺于我去发展,或者说我可以改变思路,改变自己去适应这个环境

题目:点这里

解法

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: bool isUnivalTree(TreeNode* root) { if(root==nullptr){ return true; } if(root->left){ if(root->val!=root->left->val){ return false; } if(isUnivalTree(root->left)==false){ return false; } } if(root->right){ if(root->val!=root->right->val){ return false; } if(isUnivalTree(root->right)==false){ return false; } } return true; } };

这个解法的思路就是首先判断根节点是不是为空,为空则返回true,然后利用if语句判断根节点的左节点是否为空,不为空则首先判断根节点与左节点的值是否相等,不等则返回false,再将左节点传入下一层函数,若返回值为false,则也返回false,右节点同理,最终如果都不成立,就返回true。

我的错误解法

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: bool isUnivalTree(TreeNode* root) { if(root->left==nullptr||root->right==nullptr){ return true; } if(root->val!=root->left->val||root->val!=root->right->val){ return false; } else{ return isUnivalTree(root->left)==false||isUnivalTree(root->right)==false?false:true; } } };

我的错误在于没有对根节点和左右节点分开进行讨论,导致指针越界访问。

反思

看情况对左右节点分情况讨论;

为递归预留出口,也就是对根节点是否为空进行优先判断。

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

相关文章:

  • 如何用自然语言分割任意物体?sam3大模型镜像快速上手指南
  • AI Agent 在汽车上的典型应用场景,研发入门
  • PyTorch-2.x镜像让多版本CUDA切换变得异常简单
  • YOLOv8视频分析实战:云端GPU处理4K视频不卡顿
  • TouchGFX入门必读:官方Demo分析解读
  • AI隐私卫士深度测评:打码效果/速度/价格全面对比
  • 测试开机启动脚本Go语言微服务注册与发现机制
  • 学长亲荐2026 TOP9 AI论文写作软件:专科生毕业论文全攻略
  • 会议记录助手:FSMN-VAD实现发言时段自动提取
  • Polars DataFrame中的复杂计算与Numba优化
  • Azure DevOps中的用户管理:RBAC与AD组的完美结合
  • 如何高效实现中文语音识别?科哥开发的FunASR镜像一键上手
  • python基于vue的高校学生党员管理系统django flask pycharm
  • 如何实现进度提示?Super Resolution异步响应开发指南
  • Live Avatar实时推理瓶颈:为何24GB显卡难以支持14B模型
  • WinUI3中的AppBarButton连接状态管理
  • python基于vue的高校学生实习综合服务平台设计与实现django flask pycharm
  • STM32环境下ModbusSlave数据交互系统学习路径
  • 用Z-Image-Turbo做了个AI画展,全流程实录分享
  • 解密SQL中的时间计算:以开发请求为例
  • STM32调试利器:STLink驱动安装深度剖析
  • USB Serial Controller驱动入门必看:从零开始
  • CosyVoice-300M Lite实战案例:多语言客服系统快速搭建详细步骤
  • python基于vue的高校学生成绩管理系统设计与实现django flask pycharm
  • python基于vue的高校网上订餐平台设计与实现django flask pycharm
  • YOLOv5训练数据避坑指南:云端GPU按需付费,省80%成本
  • Qwen2.5-7B-Instruct工具调用教程:Function Calling实战
  • 视频博主必备:AI自动打码云端方案全攻略
  • AnimeGANv2教程:风景照片转动漫风格的技术实现
  • 5分钟部署阿里通义Z-Image-Turbo,AI绘画一键生成超写实图像