news 2026/4/23 17:07:55

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树的练习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; } } };

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

反思

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 19:37:43

STM32调试利器:STLink驱动安装深度剖析

STM32调试从“连不上”到“秒识别”:STLink驱动安装全链路实战指南 你有没有过这样的经历? 新焊好一块STM32板子,兴冲冲插上STLink,打开IDE准备烧录程序——结果设备管理器里赫然显示一个黄色感叹号:“ STM Device …

作者头像 李华
网站建设 2026/4/23 11:34:21

Live Avatar部署教程:4卡24GB配置下的参数调优技巧

Live Avatar部署教程:4卡24GB配置下的参数调优技巧 1. 引言 Live Avatar是由阿里巴巴联合多所高校共同开源的一款先进数字人生成模型,旨在通过文本、图像和音频输入驱动高保真虚拟人物视频的生成。该模型基于14B参数规模的DiT(Diffusion in…

作者头像 李华
网站建设 2026/4/23 11:35:55

AI Agent 在汽车上的典型应用场景,研发入门

汽车领域,AI Agent 通常以 “多智能体协同” 的形式存在。从近两年开始,AI Agent 在汽车上正从单点功能升级为全链路场景化智能中枢。 系统总结了AI Agent 在汽车行业的应用,覆盖智能座舱、自动驾驶、车联网服务与车辆运维四大领域&#xff0…

作者头像 李华
网站建设 2026/4/23 16:03:06

解决Module Federation中的NG_VALUE_ACCESSOR问题

引言 在现代Web开发中,模块联邦(Module Federation)技术被广泛应用于微前端架构中。特别是在使用NX、Angular和Ionic构建应用时,模块联邦可以帮助我们实现代码共享和独立部署。然而,某些配置问题可能会导致意想不到的错误,比如ControlValueAccessor缺失的问题。今天我们…

作者头像 李华
网站建设 2026/4/23 11:34:48

Telerik Reporting 2023 升级指南:解决前后端兼容性问题

随着 Telerik Reporting 的不断更新,开发人员在升级时常常会遇到一些兼容性问题。本文将详细讨论在升级到 Telerik Reporting 2023 版本时,前后端如何协调工作,解决常见的问题,并提供实际案例。 前言 Telerik Reporting 是一个强大的报表解决方案,广泛应用于企业级应用中…

作者头像 李华
网站建设 2026/4/23 13:17:49

TypeScript中的类型约束

在TypeScript编程中,类型系统的强大之处在于它能够在编译时捕获潜在的错误,从而减少运行时错误的可能性。今天,我们将探讨如何在TypeScript中通过类型约束实现一个灵活且强大的表单验证逻辑。 理解问题 假设我们有一个表单对象,这个对象包含两个属性:like 和 take。like…

作者头像 李华