另一棵树的子树
# 📃 题目描述
题目链接:572. 另一棵树的子树 (opens new window)
# 🔔 解题思路
双递归:判断子树 + 判断两棵树是否相等
和 剑指 Offer 28. 对称的二叉树 (opens new window) 基本差不多
/**
* 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 {
// 判断 subRoot 是否是 root 的子树
public boolean isSubtree(TreeNode root, TreeNode subRoot) {
if (subRoot == null) {
return true;
}
if (root == null) {
return false;
}
return isSameTree(root, subRoot) || isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);
}
// 判断 root1 和 root2 是否相等
private boolean isSameTree(TreeNode root1, TreeNode root2) {
if (root1 == null && root2 == null) {
return true;
}
else if (root1 == null || root2 == null) {
return false;
}
else if (root1.val != root2.val) {
return false;
}
// root1.val == root2.val
return isSameTree(root1.left, root2.left) && isSameTree(root1.right, root2.right);
}
}
# 💥 复杂度分析
- 空间复杂度:
- 时间复杂度:
🎁 公众号

各位小伙伴大家好呀,叫我小牛肉就行,目前在读东南大学硕士,上方扫码关注公众号「飞天小牛肉」,与你分享我的成长历程与技术感悟~
帮助小牛肉改善此页面 (opens new window)
Last Updated: 2023/02/16, 11:27:10