树的子结构

题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

注意树的遍历即可。

/**
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;
          } else {
              if (root1.val == root2.val) {
                  if (judge(root1, root2)) {
                      return true;
                  }
              }
              return HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2);
          }
      }

    public boolean judge(TreeNode root, TreeNode target) {
        if (target == null) {
            return true;
        } else if (root == null) {
            return false;
        } else if (root.val == target.val) {
            return judge(root.left, target.left) && judge(root.right, target.right);
        }

        return false;
    }
}