山东高级网站建设,网站建设与网页设计 视频,聊城做wap网站公司,免费禁用黄app软件排行题目描述#xff1a;
给定两棵二叉树 tree1 和 tree2#xff0c;判断 tree2 是否以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 注意#xff0c;空树 不会是以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 示例 1#xff1a; 输入#xff1a;tree…题目描述
给定两棵二叉树 tree1 和 tree2判断 tree2 是否以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 注意空树 不会是以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 示例 1 输入tree1 [1,7,5], tree2 [6,1]
输出false
解释tree2 与 tree1 的一个子树没有相同的结构和节点值。示例 2 输入tree1 [3,6,7,1,8], tree2 [6,1]
输出true
解释tree2 与 tree1 的一个子树拥有相同的结构和节点值。即 6 - 1。 提示
0 节点个数 10000
代码
public boolean isSubStructure(TreeNode A, TreeNode B) {if (A null || B null)return false;//先从根节点判断B是不是A的子结构如果不是在分别从左右两个子树判断//只要有一个为true就说明B是A的子结构return isSub(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B);
}boolean isSub(TreeNode A, TreeNode B) {//这里如果B为空说明B已经访问完了确定是A的子结构if (B null)return true;//如果B不为空A为空或者这两个节点值不同说明B树不是//A的子结构直接返回falseif (A null || A.val ! B.val)return false;//当前节点比较完之后还要继续判断左右子节点return isSub(A.left, B.left) isSub(A.right, B.right);
}