截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载
下载链接:https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ
提取码:6666



public boolean isCousins(TreeNode root, int x, int y) {//两个队列一个存放树的节点,一个存放节点对应的值Queue<TreeNode> queue = new LinkedList<>();Queue<Integer> value = new LinkedList<>();queue.add(root);value.add(root.val);//如果队列不为空,说明树的节点没有遍历完,就继续遍历while (!queue.isEmpty()) {//BFS是从上到下一层一层的打印,levelSize表示//当前层的节点个数int levelSize = queue.size();for (int i = 0; i < levelSize; i++) {//节点和节点值同时出队TreeNode poll = queue.poll();value.poll();//首先判断x和y是否是兄弟节点的值,也就是判断他们的父节点//是否是同一个if (poll.left != null && poll.right != null) {//如果是亲兄弟节点,直接返回falseif ((poll.left.val == x && poll.right.val == y) ||(poll.left.val == y && poll.right.val == x)) {return false;}}//左子节点不为空加入到队列中if (poll.left != null) {queue.offer(poll.left);value.offer(poll.left.val);}//右子节点不为空加入到队列中if (poll.right != null) {queue.offer(poll.right);value.offer(poll.right.val);}}//判断当前层是否包含这两个节点的值,如果包含就是堂兄弟节点if (value.contains(x) && value.contains(y))return true;}return false;
}

时间复杂度O(n)n是节点的个数,最差情况下遍历到最后一层。
空间复杂度O(n),使用两个队列,队列中一个存放的是节点,一个存放的是节点的值。

private TreeNode xParent = null;//x的父节点
private TreeNode yParent = null;//y的父节点
private int xDepth = -1;//x的深度
private int yDepth = -2;//y的深度public boolean isCousins(TreeNode root, int x, int y) {dfs(root, null, x, y, 0);//如果他俩的深度一样,也就是在同一层,又不是同一个父亲,那么他俩//就是堂兄弟节点,否则不是return xDepth == yDepth && xParent != yParent ? true : false;
}public void dfs(TreeNode root, TreeNode parent, int x, int y, int depth) {if (root == null)return;if (root.val == x) {//如果找到了x节点,就把他的父节点和深度记录下来xParent = parent;xDepth = depth;} else if (root.val == y) {//如果找到了y节点,就把他的父节点和深度记录下来yParent = parent;yDepth = depth;}//如果确定他俩是堂兄弟节点了,直接返回,不用再往下遍历了if (xDepth == yDepth && xParent != yParent)return;dfs(root.left, root, x, y, depth + 1);dfs(root.right, root, x, y, depth + 1);
}

时间复杂度O(n)n是节点的个数,最差情况下遍历所有节点。
空间复杂度O(n),栈的深度,最坏情况下二叉树退化为链表形状。

LeetCode 993. 二叉树的堂兄弟节点相关推荐

  1. ⭐算法入门⭐《二叉树》简单07 —— LeetCode 993. 二叉树的堂兄弟节点

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   在二叉树中,根节点位于 ...

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

    文章目录 1. 题目 2. 解题 2.1 层序遍历 2.2 递归查找 1. 题目 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同 ...

  3. LeetCode题解——二叉树的堂兄弟节点

    LeetCode题解--二叉树的堂兄弟节点 题目介绍 解题思路 这题考察的就是树的遍历,其中带有2个条件遍历树 第一个条件记录下x和y出现的深度 第二个条件记录下x和y的父节点 当父节点不同xy深度相 ...

  4. 993. 二叉树的堂兄弟节点

    在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点. 我们给出了具有唯一值的二叉树的根节点 r ...

  5. 993 二叉树的堂兄弟节点

    在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点. 我们给出了具有唯一值的二叉树的根节点 r ...

  6. 二叉树的堂兄弟节点(2种实现方式)

    二叉树的堂兄弟节点 题目 二叉树的堂兄弟节点(力扣:993) 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但父节点不同,则它 ...

  7. 【leetcode 993】【二叉树的堂兄弟节点】

    leetcode 993[二叉树的堂兄弟节点] 这道题给出二叉树root,x和y,要解决的问题是在树中找到x和y,并且确定它们是否为堂兄弟节点的关系. 题目链接 https://leetcode-cn ...

  8. 二叉树的堂兄弟节点-c语言

    二叉树的堂兄弟节点-c语言 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点. 我们给出 ...

  9. leetcode——第993题——二叉树的堂兄弟节点

    题目: 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点. 我们给出了具有唯一值的二叉树 ...

最新文章

  1. Normalization 的发展历程
  2. python网络爬虫工程师薪资-月薪2万的爬虫工程师,Python需要学到什么程度?
  3. cocos2dx3.0-tinyxml在Android环境下解析xml失败的问题
  4. 巧妙设置yum软件库轻松解决软件包安装问题
  5. Entropy Broker 2.0 发布,加密安全随机数
  6. 技术人员写blog的好处
  7. WebApi网关之Bumblebee和Ocelot性能对比
  8. 大数据_Flink_数据处理_流式数据源测试---Flink工作笔记0010
  9. Jmeter系列之数据库操作
  10. 关于Meta标签中format-detection属性及含义
  11. html 样式优先级,CSS样式优先级
  12. MySQL 之 约束 (主键、唯一、非空、自增、外键)
  13. centos linux引导修复_CentOs7 修复 引导启动
  14. 【PS】如何简单的处理带晒伤皮肤的婚纱照?红斑/脱皮/减淡红色
  15. 计算机自定义桌面,如何自定义电脑桌面的图标显示
  16. 双向链表(Doubly Linked List)
  17. 使用占位符预防SQL注入的原理
  18. 量化投资学习-8:庄家与散户是一场猫抓老鼠的游戏
  19. **软件著作权登记**
  20. ios中safari无痕浏览模式下,localStorage的支持情况

热门文章

  1. 数据指标体系的构建思路
  2. [ web 漏洞篇 ] 常见web漏洞总结之 RCE 远程代码 / 命令执行漏洞总结
  3. ogg如何转换成mp3格式?
  4. tarjan算法求SCC,e-DCC,v-DCC
  5. 细胞免疫疗法领军企业药明巨诺在港交所主板上市
  6. Qt 之 模仿 QQ登陆界面——旋转窗口篇
  7. 最优化方法期末考试复习
  8. 算法基础知识——二叉树
  9. 计算机国际会议开幕词,国际会议开幕词英文
  10. C 语言 抽象语法树AST