-
Notifications
You must be signed in to change notification settings - Fork 48
/
Copy pathtreeSpiral.java
100 lines (82 loc) · 2.14 KB
/
treeSpiral.java
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import java.util.*;
public class treeSpiral {
static Node root = null;
class Node {
int data;
Node right;
Node left;
Node(int data) {
this.data = data;
right = left = null;
}
}
public Node insert(Node node, int data) {
if (node == null) {
return new Node(data);
}
if (data < node.data) {
if (node.left != null) {
insert(node.left, data);
} else
node.left = new Node(data);
} else if (data > node.data) {
if (node.right != null) {
insert(node.right, data);
} else
node.right = new Node(data);
}
return node;
}
public void add(int data) {
root = insert(root, data);
}
int height(Node root) {
if (root == null) {
return 0;
} else {
int lh = height(root.left);
int rh = height(root.right);
if (lh > rh) {
return (lh + 1);
} else
return (rh + 1);
}
}
void printSpiral(Node node) {
int h = height(node);
int i = 1;
boolean k = false;
for (i = 1; i <= h; i++) {
printGlevel(node, i, k);
k = !k;
}
}
void printGlevel(Node root, int i, boolean k) {
if (root == null) {
return;
}
if (i == 1) {
System.out.println(root.data + " ");
} else if (i > 1) {
if (k != false) {
printGlevel(root.left, i - 1, k);
printGlevel(root.right, i - 1, k);
} else {
printGlevel(root.right, i - 1, k);
printGlevel(root.left, i - 1, k);
}
}
}
public static void main(String args[]) {
treeSpiral bt = new treeSpiral();
bt.add(1);
bt.add(2);
bt.add(3);
bt.add(7);
bt.add(6);
bt.add(5);
bt.add(4);
System.out.println("Height of tree: " + bt.height(root));
bt.printSpiral(root);
}
}