题目描述
这个刚开始没看懂题意,单纯的以为子结构就是一个根左右的结构,枚举所有的根左右情况来遍历分析,失败。
最终采用字符串来做
样例
public boolean hasSubtree(TreeNode pRoot1, TreeNode pRoot2) {
String nodes = nodes(pRoot1);
String nodes2 = nodes(pRoot2);
return nodes.contains(nodes2)&&nodes2.trim().length()>0;
}
public String nodes(TreeNode pRoot1){
StringBuilder sbf=new StringBuilder();
if (pRoot1!=null){
String v="";
int val = pRoot1.val;
TreeNode left = pRoot1.left;
TreeNode right = pRoot1.right;
v+=val;
sbf.append(v.trim());
sbf.append(nodes(left).trim());
sbf.append(nodes(right).trim());
}
return sbf.toString();
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla