码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-04-15 19:54:40      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:题目   nsis   not   sel   solution   nts   sam   ons   The   

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);//这是判断结构是否相同的条件,对应节点值相同,并且左右子树对应的结构也要相同。
    }
}

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

标签:题目   nsis   not   sel   solution   nts   sam   ons   The   

原文地址:https://www.cnblogs.com/yjxyy/p/10712422.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!