572. 另一个树的子树(Leetcode)

168 阅读1分钟

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

示例 1:

给定的树 s:
     3
    / \
   4   5
  / \
 1   2
 
给定的树 t:
   4 
  / \
 1   2
 
返回 true,因为 t  s 的一个子树拥有相同的结构和节点值。
复制代码
示例 2:

给定的树 s:
     3
    / \
   4   5
  / \
 1   2
    /
   0
   
给定的树 t:
   4
  / \
 1   2
 
返回 false
复制代码

题解:这道题让我们判断一棵树是否为另外一棵树的子树,子树必须是从某个节点开始,然后到叶子节点的,那么就可以转为比较两棵树是否相同的问题了,遍历其中一棵树s,判断以某个节点开始的树是否等于另外一棵树t。

//判断以当前节点开始的二叉树与t是否相同,以及其左右节点开始的是否相同

//两个都为空,直接返回true
  
 //其中一个为空,返回false

 //比较当前节点是否相同
 
 //比较其左右子树是否相同