码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]Subtree of Another Tree判断一棵树是不是另一棵树的子树

时间:2018-01-31 11:35:07      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:相等   比较   答案   nod   gpo   blog   pen   sub   lis   

将树序列化为字符串,空节点用符号表示,这样可以唯一的表示一棵树。

用list记录所有子树的序列化,和目标树比较。

List<String> list = new ArrayList<>();
    public boolean isSubtree(TreeNode s, TreeNode t) {
        helper(s);
        helper(t);
        String tt = list.get(list.size()-1);
        for (int i = 0;i<list.size()-1;i++) {
            if (list.get(i).equals(tt)) return true;
        }
        return false;
    }
    public String helper(TreeNode root)
    {
        StringBuilder cur = new StringBuilder();
        if (root==null)
        {
            cur.append("#");
            return new String(cur);
        }
        cur.append(root.val);
        cur.append(helper(root.left));
        cur.append(helper(root.right));
        String s = new String(cur);
        list.add(s);
        return s;
    }

LeetCode上还有更好地答案,是递归地判断每个节点的值是不是相等,也很好理解。

上边这种做法是一个大类的做法,就是每个节点都递归地构建一个变量,一般子树问题会经常用到

[LeetCode]Subtree of Another Tree判断一棵树是不是另一棵树的子树

标签:相等   比较   答案   nod   gpo   blog   pen   sub   lis   

原文地址:https://www.cnblogs.com/stAr-1/p/8390636.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!