-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSubtree.java
More file actions
44 lines (34 loc) · 1.21 KB
/
Subtree.java
File metadata and controls
44 lines (34 loc) · 1.21 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
package chapter4TreesAndGraphs;
import chapter4TreesAndGraphs.BTree.Node;
public class Subtree {
public static void main (String[] args) {
BTree bt = new BTree();
Node n5 = bt.new Node(4,null,null);
Node n6 = bt.new Node(3,null,null);
Node n3 = bt.new Node(3,null,null);
Node n4 = bt.new Node(4,null,null);
Node n1 = bt.new Node(2,n3,n4);
Node n2 = bt.new Node(2,n5,n6);
Node root = bt.new Node(2,n1,n2);
bt.root = root;
BTree bt1 = new BTree();
// Node n51 = bt1.new Node(4,null,null);
// Node n61 = bt1.new Node(3,null,null);
// Node n31 = bt1.new Node(3,null,null);
// Node n41 = bt1.new Node(4,null,null);
Node n11 = bt1.new Node(4,null,null);
Node n21 = bt1.new Node(3,null,null);
Node root1 = bt1.new Node(2,n11,n21);
bt1.root = root1;
System.out.println(Subtree.isSubtree(bt.root, bt1.root));
}
public static boolean isEqual(Node a, Node b){
if(a==null||b==null) return a == b;
return (a.data == b.data) && isEqual(a.left,b.left) && isEqual(a.right,b.right);
}
public static boolean isSubtree(Node node, Node sub){
if(sub==null) return true;
if(node==null) return false;
return isEqual(node,sub)||isSubtree(node.left,sub)||isSubtree(node.right,sub);
}
}