【问题描述】

给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:
给定的树 s:3/ \4   5/ \1   2
给定的树 t:4 / \1   2
返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。

【解答思路】

1. 遍历 +深度优先遍历

树的包含思路

是否相同的树思路

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public boolean isSubtree(TreeNode s, TreeNode t) {if (t == null) return true;   // t 为 null 一定都是 trueif (s == null) return false;  // 这里 t 一定不为 null, 只要 s 为 null,肯定是 falsereturn isSubtree(s.left, t) || isSubtree(s.right, t) || isSameTree(s,t);}/*** 判断两棵树是否相同*/public boolean isSameTree(TreeNode s, TreeNode t){if (s == null && t == null) return true;if (s == null || t == null) return false;if (s.val != t.val) return false;return isSameTree(s.left, t.left) && isSameTree(s.right, t.right);}
}

【总结】

1. 树 多用递归遍历 树的递归遍历过程是dfs
2. 二叉树遍历
  • 前序遍历 先输出当前结点的数据,再依次遍历输出左结点和右结点
  • 中序遍历 先遍历输出左结点,再输出当前结点的数据,再遍历输出右结点
  • 后续遍历 先遍历输出左结点,再遍历输出右结点,最后输出当前结点的数据

参考链接:https://leetcode-cn.com/problems/same-tree/solution/hua-jie-suan-fa-100-xiang-tong-de-shu-by-guanpengc/
参考链接:https://leetcode-cn.com/problems/subtree-of-another-tree/solution/572java-di-gui-pan-duan-zi-shu-yu-tshi-fou-xiang-d/

[Leedcode][JAVA][第572题][另一个树的子树]相关推荐

  1. [Leedcode][JAVA][第105题][从前序与中序遍历序列构造二叉树][栈][递归][二叉树]

    [问题描述][中等] 根据一棵树的前序遍历与中序遍历构造二叉树.注意: 你可以假设树中没有重复的元素.例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = ...

  2. [Leedcode][JAVA][第470题][Ran7()实现Rand10()]

    [问题描述][Leedcode][JAVA][第470题][Ran7()实现Rand10()] 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 ...

  3. [Leedcode][JAVA][第45题][跳跃游戏 II][贪心算法]

    [问题描述][Leedcode][JAVA][第45题][跳跃游戏 II] 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2.从下标为 0 跳到下标为 1 的位置 ...

  4. leetcode学习打卡--572. 另一个树的子树(递归,二叉树遍历)

    572. 另一个树的子树 写在最前面,其实5月每日一题都做了,但是有时候没时间写博客就没记录了,唉最近越来越忙. 上题目上题目 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构 ...

  5. LeetCode 572. 另一个树的子树 思考分析

    题目 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树.s 的一个子树包括 s 的一个节点和这个节点的所有子孙.s 也可以看做它自身的一棵子树. 示例 1: 给定 ...

  6. 【刷题】572. 另一棵树的子树

    572. 另一棵树的子树 一.题目描述 二.示例 三.实现 572. 另一棵树的子树 一.题目描述 给你两棵二叉树 root 和 subRoot .检验 root 中是否包含和 subRoot 具有相 ...

  7. LeetCode Algorithm 572. 另一棵树的子树

    572. 另一棵树的子树 Ideas 首先想到的就是递归判断两棵树的每一个节点是否相等,那么就需要将subRoot跟root的每一个节点构成的子树判断是否相同. 递归判断相等的逻辑比较简单,首先当前两 ...

  8. 572. 另一棵树的子树————简单

    目录 题目 解题思路 Code 运行结果 题目 572. 另一棵树的子树 给你两棵二叉树 root 和 subRoot .检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树.如果 ...

  9. 572. 另一棵树的子树

    572. 另一棵树的子树 一.题目 二.参考代码 一.题目 给你两棵二叉树 root 和 subRoot .检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树.如果存在,返回 t ...

最新文章

  1. linux6.6 ip 设置,centos 6.6默认iptable规则详解
  2. BZOJ1975 [Sdoi2010]魔法猪学院 k短路
  3. java httpinvoker漏洞_Java反序列化漏洞学习
  4. C++中void和void*指针的含义 (指针类型的含义)
  5. 使用Vim,让你工作效率更高
  6. jquery on方法原理_jQuery 学习小结
  7. (附源码)php小型网络舆情平台设计 毕业设计 252324
  8. 华东师大计算机专业非全日制,2018年华东师范大学非全日制研究生专业目录
  9. GBD+XGBOOST算法原理深入解析
  10. 系统概念设计的完整性
  11. Java自学路线总结
  12. html怎么做整个屏幕的遮罩,html遮罩实现
  13. Android判断手机是否是小米MIUI系统
  14. 什么是看门狗?如何操作?喂狗?工作流程?定时器,计数器,看门狗的关系。
  15. javascript编码调试环境-ide和调试工具
  16. 使用Python玩转高等数学(2):幂函数
  17. 接口测试基础python+requests
  18. JS生成EXCEL(Chrome浏览器)
  19. php镂空窗,镂空文字效果 视频画面变成镂空文字效果制作
  20. 极路由修改为openwrt源并安装transmission挂pt

热门文章

  1. 21 RadioGroup ListFragment
  2. ecshop各个文件夹作用
  3. MyEclipse下安装MyBatis Generator代码反向生成工具
  4. 【零基础学习iOS开发】【02-C语言】05-进制
  5. Schema evolution in Avro, Protocol Buffers and Thrift
  6. [转]HDFS用户指南(中文版)
  7. java builder pool_每周10道Java面试题:String, String Pool, StringBuilder
  8. div中图片下方有边距
  9. centos7 kafka2.3.1单机伪集群部署
  10. linux6.8安装图形桌面,图形/文本界面安装CentOS 6.8系统详解