相关标签
一、题目要求
二、题解和代码实现
1.题解
JAVA代码简洁实现
2.代码实现
代码如下(示例):
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isSubtree(TreeNode root, TreeNode subRoot) {
if (subRoot==null){
return true;
}
if (root==null){
return false;
}
//
// boolean treebool = isTreebooldfs(root, subRoot);//根结点判断相等
// boolean lefttreebool = isSubtree(root.left, subRoot);//根结点的左子结点判断相等
// boolean righttreebool = isSubtree(root.right, subRoot);//根结点的右子结点判断相等
return isSubtree(root.left, subRoot)||isSubtree(root.right, subRoot)||isTreebool(root, subRoot);//这里只要有一个true就为true;subRoot是root的子树
}
public boolean isTreebool(TreeNode root,TreeNode subRoot){
if (root==null && subRoot ==null){
return true;
}
if (root==null || subRoot==null){
return false;
}
//boolean bool = root.val == subRoot.val;
if (root.val != subRoot.val){
return false;
}
// boolean leftbool = isTreebooldfs(root.left, subRoot.left);//判断左结点相等
// boolean rightbool = isTreebooldfs(root.right, subRoot.right);//判断右结点相等
return isTreebool(root.left, subRoot.left) && isTreebool(root.right, subRoot.right);//要都为true才是subRoot是root的子树
}
}