572. 另一棵树的子树

深度优先搜索

class Solution {
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {

        /**
         * 对于树的每个节点,都判断一下是否和子树是一个树(《100. 相同的树》)
         */
        if (subRoot == null){
            return true;
        }

        if (root == null){
            return false;
        }

        return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot) || isSameTree(root, subRoot);
    }

    public boolean isSameTree(TreeNode tree1, TreeNode tree2){

        if (tree1 == null || tree2 == null){
            return tree1 == tree2;
        }

        if (tree1.val == tree2.val) {
            return isSameTree(tree1.left, tree2.left) && isSameTree(tree1.right, tree2.right);
        }
        else {
            return false;
        }
    }
}

/**
 * 时间复杂度 O(n)
 * 空间复杂度 O(logn)
 */

https://leetcode-cn.com/problems/subtree-of-another-tree/

posted @   振袖秋枫问红叶  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示