题目:输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。
两个步骤:
1、第一步在树 A 中找到和树 B 的根结点的值一样的结点 R
2、第二步再判断树 A 中以 R 为根结点的子树是不是包含和树 B 一样的结构。
对于递归:想好判断条件,以及 什么条件下该去递归。
[java] view plain copy /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if(root1 == null || root2 == null) return false; return isEqual(root1, root2) || HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2); } private boolean isEqual(TreeNode root1, TreeNode root2) { if(root2 == null) return true; if(root1 == null) return false; return root1.val == root2.val && isEqual(root1.left, root2.left) && isEqual(root1.right, root2.right); } }