-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPopulateLevelPointers.java
More file actions
66 lines (60 loc) · 1.79 KB
/
PopulateLevelPointers.java
File metadata and controls
66 lines (60 loc) · 1.79 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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package swe.Tree;
class ListTreeNode {
int val;
ListTreeNode left;
ListTreeNode right;
ListTreeNode next;
public ListTreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
this.next = null;
}
}
public class PopulateLevelPointers {
public ListTreeNode connect(ListTreeNode root) {
if (root == null) {
return null;
}
ListTreeNode currentNode = root;
while (currentNode.left != null) {
ListTreeNode level = currentNode;
while (level != null) {
level.left.next = level.right;
if (level.next != null) {
level.right.next = level.next.left;
}
level = level.next;
}
currentNode = currentNode.left;
}
return root;
}
public static void main(String[] args) {
ListTreeNode root = new ListTreeNode(1);
root.left = new ListTreeNode(2);
root.right = new ListTreeNode(3);
root.left.left = new ListTreeNode(4);
root.left.right = new ListTreeNode(5);
root.right.left = new ListTreeNode(6);
root.right.right = new ListTreeNode(7);
PopulateLevelPointers plp = new PopulateLevelPointers();
ListTreeNode result = plp.connect(root);
ListTreeNode current = result;
while (current != null) {
ListTreeNode level = current;
while (level != null) {
System.out.print(level.val + " -> ");
level = level.next;
}
System.out.println("x");
current = current.left;
}
}
}
/*
Output :
1 -> x
2 -> 3 -> x
4 -> 5 -> 6 -> 7 -> x
*/