子树:子树的意思是只要包含了一个结点,就得包含这个结点下的所有节点.
子结构:子结构的意思是包含了一个结点,可以只取左子树或者右子树,或者都不取。

一、代码

  1. public boolean HasSubtree(TreeNode root1,TreeNode root2) {
  2. boolean result = false;
  3. if(root1!=null&&root2!=null)
  4. {
  5. if(root1.val==root2.val)
  6. {
  7. result = HasSubtree01(root1,root2);
  8. }
  9. if(!result)result = HasSubtree(root1.left,root2);
  10. if(!result)result = HasSubtree(root1.right,root2);
  11. }
  12. return result;
  13. }
  14. //当根节点相同的时候才调用此函数来递归
  15. public static boolean HasSubtree01(TreeNode root1,TreeNode root2) {
  16. if(root1==null&&root2!=null)return false;
  17. if(root2==null)return true;
  18. if(root1.val!=root2.val)return false;
  19. return HasSubtree01(root1.left,root2.left)&&HasSubtree01(root1.right,root2.right);
  20. }