zoukankan      html  css  js  c++  java
  • 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);//这是判断结构是否相同的条件,对应节点值相同,并且左右子树对应的结构也要相同。
        }
    }
    
  • 相关阅读:
    连载一:RobotFramework+SeleniumWebdriver+RIDE的安装
    一个小小黑点乱了我的芳心
    JDK的环境配置
    Eclipse中安装TestNG插件
    RobotFramework的安装
    导入现有java工程
    eclipse创建项目(步骤加图片)
    java--算术运算符
    java--数据类型
    java程序结构--day01
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10712422.html
Copyright © 2011-2022 走看看