image.png

解决思路

递归

  1. class Solution {
  2. public boolean isSubtree(TreeNode s, TreeNode t) {
  3. //如果树为空,则s为空,则返回false
  4. if(s == null){return false;}
  5. //如果子树匹配,则返回true
  6. if(isSame(s,t)){return true;}
  7. return isSubtree(s.left,t) || isSubtree(s.right,t);
  8. }
  9. //判断子树是否相同
  10. public boolean isSame(TreeNode s,TreeNode t){
  11. //如果遍历到最后为空,则返回true
  12. if(s==null && t==null){return true;}
  13. //如果一个为空另一个非空则返回false
  14. if(s==null || t==null){return false;}
  15. //如果两个值不同则返回false
  16. if(s.val != t.val){return false;}
  17. //依次遍历左子树喝右子树
  18. return (isSame(s.left,t.left) && isSame(s.right,t.right));
  19. }
  20. }