Leetcode 572. 另一棵树的子树

Myth丶恋晨 2022-09-16 11:24 257阅读 0赞

题目重述

给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。

二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。

示例 1:

  1. 输入:root = [3,4,5,1,2], subRoot = [4,1,2]
  2. 输出:true

示例 2:

  1. 输入:root = [3,4,5,1,2,null,null,null,null,0], subRoot = [4,1,2]
  2. 输出:false

提示:

  1. root 树上的节点数量范围是 [1, 2000]
  2. subRoot 树上的节点数量范围是 [1, 1000]
  3. -104 <= root.val <= 104
  4. -104 <= subRoot.val <= 104

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

思路

深度优先遍历,如果发现根节点数据值一样,那么就判断这两个树,是否是相同的树

Java实现

  1. class Solution {
  2. private boolean isSubTreeBool = false;
  3. public boolean isSubtree(TreeNode root, TreeNode subRoot) {
  4. dfs(root,subRoot);
  5. return isSubTreeBool;
  6. }
  7. public void dfs(TreeNode root, TreeNode subRoot){
  8. if(root==null){
  9. return;
  10. }
  11. if(root.val==subRoot.val){
  12. if(isSameTree(root,subRoot)){
  13. isSubTreeBool = true;
  14. }
  15. }
  16. dfs(root.left,subRoot);
  17. dfs(root.right,subRoot);
  18. }
  19. public boolean isSameTree(TreeNode tree1,TreeNode tree2){
  20. if(tree1==null && tree2==null){
  21. return true;
  22. }
  23. if(tree1==null || tree2==null){
  24. return false;
  25. }
  26. if(tree1.val!=tree2.val){
  27. return false;
  28. }
  29. return isSameTree(tree1.left,tree2.left) && isSameTree(tree1.right,tree2.right);
  30. }
  31. }

发表评论

表情:
评论列表 (有 0 条评论,257人围观)

还没有评论,来说两句吧...

相关阅读

    相关 572. 一个

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

    相关 LeetCode572. 一个

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