26. 树的子结构

NowCoder

题目描述

26. 树的子结构 - 图1

解题思路

  1. public boolean HasSubtree(TreeNode root1, TreeNode root2) {
  2. if (root1 == null || root2 == null)
  3. return false;
  4. return isSubtreeWithRoot(root1, root2) || HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2);
  5. }
  6. private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) {
  7. if (root2 == null)
  8. return true;
  9. if (root1 == null)
  10. return false;
  11. if (root1.val != root2.val)
  12. return false;
  13. return isSubtreeWithRoot(root1.left, root2.left) && isSubtreeWithRoot(root1.right, root2.right);
  14. }

26. 树的子结构 - 图2