思路一: 我创立一个方法compare,传入两个树A和B,从头结点开始对比,判断B是不是A的一个子树。在isSubStructure方法中,先调用compare方法,如果true,返回true,如果是false,说明从A的头结点开始对比是不对的,再从A的左或者A的右调用isSubStructure方法。 public class Solution { public boolean isSubStructure(TreeNode A, TreeNode B) { if (A == null || B == null) return false; if (compare(A, B)) { return true; } else { return isSubStructure(A.left, B) || isSubStructure(A.right, B); } } /** * 一个方法,从根节点开始对比,判断B是不是A的一个子树 * * @param A * @param B * @return */ public boolean compare(TreeNode A, TreeNode B) { if (B == null) return true; if (A == null) return false; if (A.val != B.val) { return false; } else {//根节点的值相等 return compare(A.left, B.left) && compare(A.right, B.right); } } }