-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHasSubtree.java
More file actions
52 lines (47 loc) · 1.31 KB
/
Copy pathHasSubtree.java
File metadata and controls
52 lines (47 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package tree;
import org.junit.Test;
/**
* @Author: wei1
* @Date: Create in 2018/12/18 20:19
* @Description:
*/
public class HasSubtree {
public boolean hasSubtree(TreeNode root1,TreeNode root2) {
if(root1==null||root2==null){
return false;
}
StringBuilder r1 = new StringBuilder();
serialize(root1,r1);
String s1 = r1.toString();
System.out.println(s1);
StringBuilder r2 = new StringBuilder();
serialize(root2,r2);
String s2 = r2.toString();
System.out.println(s2);
if(s1.contains(s2)){
return true;
}
return false;
}
public void serialize(TreeNode root,StringBuilder res){
if(root==null){
res.append("#!");
return;
}
res.append(root.val+"!");
serialize(root.left,res);
serialize(root.right,res);
}
@Test
public void test() {
TreeNode head = new TreeNode(8);
head.left = new TreeNode(8);
head.left.left = new TreeNode(9);
head.left.right = new TreeNode(2);
head.left.right.left = new TreeNode(4);
head.left.right.right = new TreeNode(7);
head.right = new TreeNode(7);
boolean b = hasSubtree(head, head.left);
System.out.println(b);
}
}