LeetCode 993. 二叉树的堂兄弟节点(层序遍历)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 层序遍历
      • 2.2 递归查找

1. 题目

在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。

如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。

我们给出了具有唯一值的二叉树的根节点 root,以及树中两个不同节点的值 x 和 y。

只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true。否则,返回 false。

在这里插入图片描述

示例 1:
输入:root = [1,2,3,4], x = 4, y = 3
输出:false

在这里插入图片描述

示例 2:
输入:root = [1,2,3,null,4,null,5], x = 5, y = 4
输出:true

在这里插入图片描述

示例 3:
输入:root = [1,2,3,null,4], x = 2, y = 3
输出:false

提示:
二叉树的节点数介于 2 到 100 之间。
每个节点的值都是唯一的、范围为 1 到 100 的整数。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cousins-in-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 层序遍历

既然题目要求两节点在同一层,很容易想到层序遍历

  • 设置两个bool变量记录x,y出现与否
  • 然后遍历过程中,判断每个节点的左右是否同时存在x,y(是否是一个父节点)
class Solution {
public:bool isCousins(TreeNode* root, int x, int y) {queue<TreeNode*> q;TreeNode *tp;q.push(root);int n;bool xOccur = false, yOccur = false;while(!q.empty()){n = q.size();while(n--)//这个循环内是一层的节点{tp = q.front();q.pop();//如果都属于一个父节点,falseif((tp->left && tp->right) && ((tp->left->val == x && tp->right->val == y)|| (tp->left->val == y && tp->right->val == x)))return false;if(tp->val == x)xOccur = true;if(tp->val == y)yOccur = true;if(tp->left)q.push(tp->left);if(tp->right)q.push(tp->right);}//这一层结束了,检查x,y的出现状态if((xOccur^yOccur) == 1)//只有一个出现过了,说明不在一层return false;else if(xOccur && yOccur)//都出现了return true;}return false;}
};

在这里插入图片描述

2.2 递归查找

  • 题目说了值都是唯一的
  • 设置变量记录x,y的父节点和深度,递归查找x,y
class Solution {	TreeNode *pX = NULL, *pY = NULL;//x,y节点的父节点int depX = 0, depY = 0;//x,y节点的深度
public:bool isCousins(TreeNode* root, int x, int y) {findXY(root,x,y,0);if((pX != pY) && (depX == depY))return true;return false;}void findXY(TreeNode* root, int &x, int &y, int dep){if(root == NULL)return;if((root->left && (root->left->val == x))|| (root->right && (root->right->val == x))){pX = root;depX = dep+1;}if((root->left && (root->left->val == y))|| (root->right && (root->right->val == y))){pY = root;depY = dep+1;}findXY(root->left,x,y,dep+1);findXY(root->right,x,y,dep+1);}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | IRW:基于知识图谱和关系推理的视觉叙事框架

笔记整理&#xff1a;孙悦&#xff0c;天津大学 链接&#xff1a;https://www.aaai.org/AAAI21Papers/AAAI-3382.XuC.pdf动机视觉叙事是生成一个短篇故事来描述有序图像流的任务。与视觉字幕不同&#xff0c;故事不仅包含事实描述&#xff0c;还包含未出现在图像中的想象概念。…

薅羊毛 Colab使用外部数据的7种方法!

文 | Coggle源 | Coggle数据科学Colab作为非常强大且优惠的计算平台&#xff0c;一直广受大家喜爱。可以随时随地使用&#xff0c;还有免费的GPU可以薅羊毛。那么如何在Colab中使用外部数据集&#xff0c;来完成竞赛呢&#xff0c;本文将给出几种常见的方法。方法1&#xff1a;…

sql 将整数型 numeric数据转换成date

将整数型的20180909时间转换成日期 select cast(to_char(A,99999999) as date) as yy from 表名 limit 100

高可用性系统在大众点评的实践与经验

背景 所谓高可用性指的是系统如何保证比较高的服务可用率&#xff0c;在出现故障时如何应对&#xff0c;包括及时发现、故障转移、尽快从故障中恢复等等。本文主要以点评的交易系统的演进为主来描述如何做到高可用&#xff0c;并结合了一些自己的经验。需要强调的是&#xff0c…

图灵奖大佬+谷歌团队,为通用人工智能背书!CV 任务也能用 LM 建模!

文 | ZenMoore编 | 小轶图灵奖大佬 Geoffrey Hinton 的团队和 Google Brain 团队近日发布新工作 Pix2seq&#xff0c;将 CV 经典任务 目标检测 转换为了语言模型的下游任务。这就很有意思了朋友们&#xff01;因为这是一个很一般化的范式&#xff01;也就是说&#xff0c;不光是…

论文浅尝 | 异构图 Transformer

笔记整理&#xff1a;许泽众&#xff0c;浙江大学博士在读论文链接&#xff1a;https://arxiv.org/abs/2003.01332本文主要提出一种处理异构图的方法&#xff0c;所谓异构图&#xff08;Heterogeneous graph&#xff09;是指在一个图中会出现不同类型的边和节点的图。早期对于图…

LeetCode 1145. 二叉树着色游戏(计算节点个数)

1. 题目 有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中&#xff0c;给出二叉树的根节点 root&#xff0c;树上总共有 n 个节点&#xff0c;且 n 为奇数&#xff0c;其中每个节点上的值从 1 到 n 各不相同。 游戏从「一号」玩家开始&#xff08;「一号」玩家为红色&a…

常见的时间序列预测模型python实战汇总

最完整的时间序列分析和预测&#xff08;含实例及代码&#xff09;&#xff1a;https://mp.weixin.qq.com/s/D7v7tfSGnoAqJNvfqGpTQA 1 时间序列与时间序列分析 在生产和科学研究中&#xff0c;对某一个或者一组变量 x(t)x(t) ARIMA 模型对时间序列的要求是平稳型。因此&#x…

简单复读机LR如何成为推荐系统精排之锋?

文 | 水哥源 | 知乎saying1. 众所周知&#xff0c; 人类&#xff08;划掉&#xff09;推荐的本质是复读机2. 精排之锋&#xff0c;粗排之柔&#xff0c;召回之厚3. 在推荐里谈“过拟合”很容易给我们造成心理上的松懈&#xff0c;导致我们忽略环境&#xff0c;氛围等多种因素的…

从0到1构建美团压测工具

背景 美团内部的RPC服务大多构建在Thrift之上&#xff0c;在日常开发服务的过程中&#xff0c;需要针对这些服务进行压力测试&#xff08;以下简称压测&#xff09;来发现潜在问题。常用的方法有&#xff1a; 使用一些脚本语言如&#xff1a;Python、Ruby等&#xff0c;读取线上…

论文浅尝 | ERNIE-ViL:从场景图中获取结构化知识来学习视觉语言联合表示

笔记整理&#xff1a;朱珈徵&#xff0c;天津大学硕士链接&#xff1a;https://www.aaai.org/AAAI21Papers/AAAI-6208.YuFei.pdf动机现有的视觉语言预训练方法试图通过在大的图像文本数据集上的视觉基础任务来学习联合表示&#xff0c;包括基于随机掩码子词的掩码语言建模、掩码…

LeetCode 222. 完全二叉树的节点个数(二分查找)

1. 题目 给出一个完全二叉树&#xff0c;求出该树的节点个数。 说明&#xff1a; 完全二叉树的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最左边的若干…

常见的统计分析方法汇总,指标对比分析、时间序列预测

常见的八种统计分析法如下&#xff1a; 指标对比分析法分组分析法时间数列及动态分析法指数分析法平衡分析法综合评价分析景气分析预测分析 1 比较分析法## 一、指标对比分析法指标对比分析法&#xff0c;又称比较分析法&#xff0c;是统计分析中最常用的方法。是通过有关的指…

Android单元测试研究与实践

处于高速迭代开发中的Android项目往往需要除黑盒测试外更加可靠的质量保障&#xff0c;这正是单元测试的用武之地。单元测试周期性对项目进行函数级别的测试&#xff0c;在良好的覆盖率下&#xff0c;能够持续维护代码逻辑&#xff0c;从而支持项目从容应对快速的版本更新。单元…

这三个NLP项目写进简历,网申通过率提高50%

01三大企业级项目项目一京东智能对话系统项目项目简介&#xff1a;智能客服机器人已经成为了客服系统的重要组成部分&#xff0c;帮助人工客服提升工作效率&#xff0c;为企业降低人工成本。作为智能客服的行业先驱&#xff0c;京东多年来致力打造全链路的客服机器人&#xff0…

论文浅尝 | MulDE:面向低维知识图嵌入的多教师知识蒸馏

笔记整理&#xff1a;朱渝珊&#xff0c;浙江大学在读博士&#xff0c;研究方向为快速知识图谱的表示学习&#xff0c;多模态知识图谱。Motivation为了更高的精度&#xff0c;现有的KGE方法都会采用较高的embedding维度&#xff0c;但是高维KGE需要巨大的训练成本和存储空间。现…

LeetCode 453. 最小移动次数使数组元素相等(数学)

1. 题目 给定一个长度为 n 的非空整数数组&#xff0c;找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。 示例: 输入: [1,2,3]输出: 3 解释: 只需要3次移动&#xff08;注意每次移动会增加两个元素的值&#xff09;&#xff1a;[1,2,3] > [2…

jupyter文件转换成python文件

method 1 1&#xff0c;在当前文件夹的目录中输入cmd并回车&#xff08;打开的cmd中会显示出你当前的目录&#xff09; 2&#xff0c;输入命令&#xff1a; jupyter nbconvert --to script *.ipynb 3&#xff0c;运行完后&#xff0c;当前文件夹目录中的所有.ipynb文件都会转成…

性能优化模式

摘要 性能优化涉及面很广。一般而言&#xff0c;性能优化指降低响应时间和提高系统吞吐量两个方面&#xff0c;但在流量高峰时候&#xff0c;性能问题往往会表现为服务可用性下降&#xff0c;所以性能优化也可以包括提高服务可用性。在某些情况下&#xff0c;降低响应时间、提高…

征稿 | 国际KG大会 IJCKG 2021专辑征文

国际知识图谱联合会议&#xff08;International Joint Conference on Knowledge Graphs (IJCKG 2021, 与ACM/SIGAI联合办会&#xff09;今年将于12月6日-8日在线召开。Data Intelligence今年被EI数据库收录后&#xff0c;有幸成为大会推荐期刊&#xff0c;大会优秀论文将推荐在…