剑指 Offer 26.树的子结构
解题思路:
若树 B 是树 A 的子结构,则子结构的根节点可能为树 A 的任意一个节点。因此,判断树 B是否是树 A 的子结构,需完成以下两步工作:
先序遍历树 AA 中的每个节点 n_A;(对应函数 isSubStructure(A, B))
判断树 A中 以 n_A为根节点的子树 是否包含树B。(对应函数 recur(A, B))
class Solution {
public boolean isSubStructure(TreeNode A, TreeNode B) {
if(A == null || B == null) return false;
if(recur(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B)) return true;
else return false;
}
public boolean recur(TreeNode A, TreeNode B) {
if(B == null) return true;
if(A == null || A.val != B.val) return false;
else return recur(A.left, B.left) && recur(A.right, B.right);
}
}