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

LeetCode——572. 另一颗树的子树

通过万岁!!!

  • 题目:给你两棵树,然后问subRoot是不是root的子树。也就是root某个节点的所有孩子节点在值和结构上完全与subRoot相同。
  • 思路:我的思路比较简单,就是遍历root,遇到root中节点值与subRoot的根节点相同的,就去判断下从root的这个节点开始,下面部分是不是与subRoot相同。值得注意的是,因为要求值和结构完全相同,所以遍历的顺序要一致。此外,如果我们发现了subRoot是root的子树的时候,要停止遍历。
  • 技巧:树的遍历

java代码

class Solution {boolean ret = false;public boolean isSubtree(TreeNode root, TreeNode subRoot) {preorderByRecursion(root, subRoot);return ret;}/*** 前序遍历root这个树** @param root* @param subRoot*/private void preorderByRecursion(TreeNode root, TreeNode subRoot) {if (root == null || ret) return;if (root.val == subRoot.val) {ret = traverseTree(root, subRoot);if (ret) {return;}}preorderByRecursion(root.left, subRoot);preorderByRecursion(root.right, subRoot);}/*** 遍历两个树,看下结构和值是不是相同** @param root* @param subRoot* @return*/private boolean traverseTree(TreeNode root, TreeNode subRoot) {if (subRoot == null && root == null) {return true;} else if (root == null) {return false;} else if (subRoot == null) {return false;} else {if (root.val == subRoot.val) {boolean left = traverseTree(root.left, subRoot.left);if (left) {return traverseTree(root.right, subRoot.right);}return false;} else {return false;}}}
}
  • 总结:题目不是特别难,但是好久不写递归了,有点生疏。其实我们可以找到拿到两棵树的中序和后续的字符串,然后判断下subRoot字符串是不是的包含在root的字符串之内,但是需要中序和后序都满足,不过我没有测试。
http://www.lryc.cn/news/415146.html

相关文章:

  • Spring Boot整合MyBatis-Flex
  • 重塑未来体验:边缘计算与云原生的完美邂逅
  • 浅谈基础数论(c++)
  • jdk 17新特性 sealed 关键字
  • 在仪器计量校准中,无尘车间洁净室检测有哪些方法和流程?
  • 【跨时代】第四次工业革命彻底来袭!什么是AI+
  • 前端性能优化-纲领篇
  • 深度学习-----------数值稳定性
  • SpringBoot项目接口可以承受的调用次数
  • 抽象代数精解【8】
  • 数据结构与算法 - 二叉树
  • Spring Cloud Gateway如何给一个请求加请求头
  • chromedriver版本下载地址汇总chromedriver所有版本下载地址汇总国内源下载
  • Go语言与Windows系统
  • JAVA—面向对象编程高级
  • [BJDCTF2020]Mark loves cat1
  • 微信答题小程序产品研发-用户操作流程设计
  • 目标检测——YOLOv10: Real-Time End-to-End Object Detection
  • 堡垒机简单介绍
  • 【星闪开发连载】WS63E 星闪开发板和hi3861开发板的对比
  • Python接口自动化测试框架(实战篇)-- Jenkins持续集成
  • 【leetcode】根据二叉树创建字符串、二叉树的前中后遍历(非递归链表实现二叉树)
  • 【RabbitMQ】RabbitMQ交换机概述
  • ROS2从入门到精通4-6:路径平滑插件开发案例(以B样条曲线平滑为例)
  • Tensorflow训练视觉模型(CPU)
  • 从根儿上学习spring 十 之run方法启动第四段(4)
  • 如果我的发明有修改,需要如何处理?
  • java:File与MultipartFile互转
  • 高级java每日一道面试题-2024年8月04日-web篇-如果客户端禁止cookie能实现session还能用吗?
  • leetcode 107.二叉树的层序遍||