二叉树的堂兄弟节点判断001
1、描述
993在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。
如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。
我们给出了具有唯一值的二叉树的根节点 root,以及树中两个不同节点的值 x 和 y。
只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true。否则,返回 false。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cousins-in-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2、关键字
二叉树,堂兄弟,
3、思路
堂兄弟,肯定在同一层,想到BFS,又不能在一层之中的数组中,按下标相差大于1来判定,因为没说是满二叉树,
堂兄弟的特点:1,父节点不同,2、深度相同,在同一层。
还是常规的BFS,写法。把亲兄弟排除之后。
设置一个全局变量,来统计当前一层,出现x,或者y了没有,如果出现,就修改标记,只有在同一层同时修改两次标记,才是堂兄弟。
4、notes
那个标志位,点赞。
亲兄弟排除那一行,够长够暴力。
5、复杂度;
时间:O(N)遍历n个节点,
空间:O(N),如果是满二叉树,最后一层,的兄弟节点,空间<(n/2)
6、code
/*** 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 isCousins(TreeNode* root, int x, int y) {int flag=2;//设置标志位,最后的结果queue<TreeNode *> que; // 每一层的队列que.push(root); // 初始化while(!que.empty()){ // 外层int longth=que.size(); // 获取层长度, 一般只一行while(longth--){auto tem=que.front(); // 获取第一个元素,然后删除que.pop();if(tem->left&& tem->right&&((tem->left->val==x&&tem->right->val==y)||(tem->left->val==y&&tem->right->val==x))) // 如果是亲兄弟,直接falsereturn false;if(tem->left!=nullptr) // 如果左子树非空,进队列{que.push(tem->left);if(tem->left->val==x||tem->left->val==y) // 如果子树的值是其中之一,就flag -1flag--;}if(tem->right){que.push(tem->right);if(tem->right->val==x||tem->right->val==y)flag--;}}if(flag==0) return true; // 一层循环结束之后,判断一次结果if(flag==1) return false; // 不在同一层} //如果flag==2,则继续循环下一层寻找return false;}
};
二叉树的堂兄弟节点判断001相关推荐
- 【leetcode 993】【二叉树的堂兄弟节点】
leetcode 993[二叉树的堂兄弟节点] 这道题给出二叉树root,x和y,要解决的问题是在树中找到x和y,并且确定它们是否为堂兄弟节点的关系. 题目链接 https://leetcode-cn ...
- 二叉树的堂兄弟节点-c语言
二叉树的堂兄弟节点-c语言 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点. 我们给出 ...
- 二叉树的堂兄弟节点(2种实现方式)
二叉树的堂兄弟节点 题目 二叉树的堂兄弟节点(力扣:993) 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但父节点不同,则它 ...
- LeetCode题解——二叉树的堂兄弟节点
LeetCode题解--二叉树的堂兄弟节点 题目介绍 解题思路 这题考察的就是树的遍历,其中带有2个条件遍历树 第一个条件记录下x和y出现的深度 第二个条件记录下x和y的父节点 当父节点不同xy深度相 ...
- ⭐算法入门⭐《二叉树》简单07 —— LeetCode 993. 二叉树的堂兄弟节点
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 在二叉树中,根节点位于 ...
- 文巾解题 leetcode993. 二叉树的堂兄弟节点
1,题目描述 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点. 我们给出了具有唯一值的 ...
- LeetCode 993. 二叉树的堂兄弟节点(层序遍历)
文章目录 1. 题目 2. 解题 2.1 层序遍历 2.2 递归查找 1. 题目 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同 ...
- leetcode——第993题——二叉树的堂兄弟节点
题目: 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点. 我们给出了具有唯一值的二叉树 ...
- LeetCode 993. 二叉树的堂兄弟节点
截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hj ...
最新文章
- 自动写作、RNN基本原理以及LSTM的基本原理
- TSNE 附有codechina代码
- 【图像处理opencv】_Jupyter 更改文件默认保存目录
- 《多核与GPU编程:工具、方法及实践》----1.5 并行程序性能的预测与测量
- HDU1247Hat’s Words(字典树)
- 51nod-有限背包计数问题【dp】
- 配置Ubuntu系统环境变量
- 安卓PHP maker汉化,android 百度地图marker添加自定义视图
- FPGA RTL级设计原则
- 写给Android开发者的混淆使用手册
- 计算机应用技术专业考试试题,全国专业技术人员计算机应用能力考试模拟试题笔试题.docx...
- python和c语言的区别-C语言、Java语言和python语言的区别在哪里
- 已解决(Python语法报错)SyntaxError invalid syntax
- Python之爬虫之BeautifulSoup学习
- java简单小程序输出所有汉字代码实例
- Flutter——实现flow布局,自定义绘制子控件
- PHP程序提示验证码错误的问题(输入了正确的验证码)
- 一、Arduino介绍
- 手机短信验证码的实现
- 【大数据】Hadoop 体系(四)
热门文章
- mysql innodb 数据打捞(一)innodb 页面结构特征
- 支付系统-财务记账 复式记账 借贷
- 【English】主语从句的引导词是如何选择?
- 机房布线网络布线之常用兵器谱
- 伦敦旅游必玩的密室逃脱体验——《神探夏洛克:官方现场游戏》
- 免费QQ群管助手-帮你管理QQ群
- 远远被大家低估了的实用智能家居设备——窗帘电机
- Chart.js使用(一)
- C1073 涉及增量编译的内部错误(编译器文件“d:\agent\_work\4\s\src\vctools\Compiler\CxxFE\sl
- 详细介绍百度ERNIE 2.0:A Continual Pre-Training Framework for Language Understanding