• 15.Subtree of Another Tree(判断一棵树是否为另一颗树的子树)


    Level:

      Easy

    题目描述:

    Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and node values with a subtree of s. A subtree of s is a tree consists of a node in s and all of this node's descendants. The tree s could also be considered as a subtree of itself.

    Example 1:
    Given tree s:

         3
        / 
       4   5
      / 
     1   2
    

    Given tree t:

       4 
      / 
     1   2
    

    Return true, because t has the same structure and node values with a subtree of s.

    Example 2:
    Given tree s:

         3
        / 
       4   5
      / 
     1   2
        /
       0
    

    Given tree t:

       4
      / 
     1   2
    

    Return false

    思路分析:

      判断t树是否为s树的子树,先在s中找到和t根节点相同的节点,然后从该节点出发判断是否存在与t完全相同的结构。

    代码:

    public class TreeNode{
        int val;
        TreeNode left;
        TreeNode right;
        public TreeNode(int x){
            val=x;
        }
    }
    public class Solution{
        public boolean isSubtree(TreeNode s,TreeNode t){
            if(s==null||t==null)
                return false;
            return checkTree(s,t)||isSubtree(s.left,t)||isSubtree(s.right,t);//找到与t根节点相同的节点,然后开始进行判断
        }
        public boolean checkTree(TreeNode s,TreeNode t){
            if(s==null&&t==null)  //同时为null证明结构一样
                return true;
            if(s==null||t==null)  //如果任意一个不为空,代表结构不一样
                return false;
            return (s.val==t.val)&&checkTree(s.left,t.left)&&checkTree(s.right,t.right);//这是判断结构是否相同的条件,对应节点值相同,并且左右子树对应的结构也要相同。
        }
    }
    
  • 相关阅读:
    JSTL标签详解
    jQuery核心基础
    JavaWeb文件上传与下载
    AOP编程模式
    2022.3.1
    2022.2.7
    Postman安装完之后打开空白
    vue项目中vueparticles的使用
    字符串中出现次数最多的字符及其出现的次数
    elementui select选择器滑动加载下一页
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10712422.html
Copyright © 2020-2023  润新知