class Solution {
public boolean isSubStructure(TreeNode A, TreeNode B) {
if(B == null || A == null) return false;
if(A.val == B.val && dfs(A.left, B.left) && dfs(A.right, B.right)) return true;
// 判断B在左子树还是右子树
return isSubStructure(A.left, B) || isSubStructure(A.right, B);
}
public boolean dfs(TreeNode node1, TreeNode node2){
// 先对node2进行判断,为空说明是子结构
// 然后对node1进行判断,如果为空说明不是
if(node2 == null) return true;
if(node1 == null) return false;
if(node1.val == node2.val){
return dfs(node1.left, node2.left)&&dfs(node1.right, node2.right);
}else{
return false;
}
}
}
剑指offer 26.树的子结构。简单易懂0ms
最新推荐文章于 2025-12-07 11:07:49 发布
本文介绍了一种判断一棵树是否为另一棵树的子结构的方法。通过递归遍历节点,利用深度优先搜索(DFS)策略来确定子树的存在性。文章提供了具体的实现代码。
157

被折叠的 条评论
为什么被折叠?



