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

Posted yjxyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);//这是判断结构是否相同的条件,对应节点值相同,并且左右子树对应的结构也要相同。
    }
}

以上是关于15.Subtree of Another Tree(判断一棵树是否为另一颗树的子树)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 572. Subtree of Another Tree

Subtree of Another Tree

572. Subtree of Another Tree

572. Subtree of Another Tree

LeetCode 572: Subtree of Another Tree

Another kind of Fibonacci(hdu3306)