树的子结构

题目:输入两棵二叉树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) {
         boolean f = false;
       if (root1 != null && root2 != null){
             if (root1.val == root2.val)  f =  same(root1,root2);
            if (!f) f = HasSubtree(root1.left,root2);
            if(!f) f = HasSubtree(root1.right,root2);
        }
       return f;
    }
    private boolean same(TreeNode root1,TreeNode root2){
        if (root1 ==null &&root2!=null ) return false;
        if (root2 ==null &&root1!=null ) return true;
        if (root1 == null && root2 == null) return true;
       if (root1.val !=root2.val) return false;
       return same(root1.left,root2.left) && same(root1.right,root2.right);

    }
}
原文地址:https://www.cnblogs.com/team42/p/6681958.html