剑指 Offer 26. 树的子结构
递归
执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:40.3 MB, 在所有 Java 提交中击败了29.98%的用户
public class Solution {public boolean isSubStructure(TreeNode A, TreeNode B) {return (A != null && B != null) && (recursion(A, B) // A 与 B 的树根进行判断|| isSubStructure(A.left, B) // A 的左子树与 B 进行对比|| isSubStructure(A.right, B) // A 的右子树与 B 进行对比);}// 此方法用于判断 B 是否为 A 的子树public boolean recursion(TreeNode A, TreeNode B) {// 如果 B 为空,说明递归到 B 的底了,B 为 A 的子树if (B == null) return true;// 如果 A 为空,此时 B 不为空,但是 A 为空,说明 B 不是 A 的子树if (A == null) return false;// 如果节点的值相等,则递归判断左右子树if (A.val == B.val) {return recursion(A.left, B.left) && recursion(A.right, B.right);} else {return false;}}}
