zoukankan      html  css  js  c++  java
  • [LeetCode]Subtree of Another Tree判断一棵树是不是另一棵树的子树

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

    用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上还有更好地答案,是递归地判断每个节点的值是不是相等,也很好理解。

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

  • 相关阅读:
    struts2知识系统整理
    JavaScript onload
    百度云如何为用户分配内存空间
    集合运算
    [hdu3530]单调队列
    [hdu4911]逆序对相关
    [hdu5199]统计数据的水题
    [hdu5200]离线+标记
    [hdu5204]水题
    [hdu5203]计数水题
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8390636.html
Copyright © 2011-2022 走看看