Skip to content

Commit 6420cc8

Browse files
author
ChienkuChen
committed
Redo 116
1 parent 11d4008 commit 6420cc8

File tree

2 files changed

+102
-71
lines changed

2 files changed

+102
-71
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package _116;
2+
3+
import datastructure.TreeLinkNode;
4+
5+
import java.util.LinkedList;
6+
import java.util.Queue;
7+
8+
/**
9+
* Definition for binary tree with next pointer.
10+
* public class TreeLinkNode {
11+
* int val;
12+
* TreeLinkNode left, right, next;
13+
* TreeLinkNode(int x) { val = x; }
14+
* }
15+
*/
16+
class Solution {
17+
public void connect(TreeLinkNode root) {
18+
if (root == null)
19+
return;
20+
21+
if (root.left != null) {
22+
root.left.next = root.right;
23+
}
24+
25+
if (root.right != null) {
26+
if (root.next != null)
27+
root.right.next = root.next.left;
28+
}
29+
30+
connect(root.left);
31+
connect(root.right);
32+
}
33+
34+
// I misunderstood the question...
35+
// it need to be solved with O(1) memory
36+
// because I used Queue, I violated the rule...
37+
// public void connect(TreeLinkNode root) {
38+
// if (root == null)
39+
// return;
40+
//
41+
// Queue<TreeLinkNode> queue = new LinkedList<>();
42+
// queue.add(root);
43+
//
44+
// while (!queue.isEmpty()) {
45+
// List<TreeLinkNode> current = new ArrayList<>();
46+
// current.addAll(queue);
47+
// queue.clear();
48+
//
49+
// Queue<TreeLinkNode> next = new LinkedList<>();
50+
// for (TreeLinkNode treeLinkNode : current) {
51+
// if (treeLinkNode.left != null)
52+
// next.add(treeLinkNode.left);
53+
// if (treeLinkNode.right != null)
54+
// next.add(treeLinkNode.right);
55+
// }
56+
//
57+
// for (int i = 0; i + 1 < current.size(); i++) {
58+
// current.get(i).next = current.get(i + 1);
59+
// }
60+
//
61+
// queue.addAll(next);
62+
// }
63+
// }
64+
65+
public static void main(String[] args) {
66+
TreeLinkNode one = new TreeLinkNode(1);
67+
TreeLinkNode two = new TreeLinkNode(2);
68+
TreeLinkNode three = new TreeLinkNode(3);
69+
TreeLinkNode four = new TreeLinkNode(4);
70+
TreeLinkNode five = new TreeLinkNode(5);
71+
TreeLinkNode six = new TreeLinkNode(6);
72+
TreeLinkNode seven = new TreeLinkNode(7);
73+
one.left = two;
74+
one.right = three;
75+
two.left = four;
76+
two.right = five;
77+
three.left = six;
78+
three.right = seven;
79+
80+
new Solution().connect(one);
81+
82+
Queue<TreeLinkNode> queue = new LinkedList<>();
83+
queue.add(one);
84+
85+
while (!queue.isEmpty()) {
86+
int size = queue.size();
87+
88+
Queue<TreeLinkNode> next = new LinkedList<>();
89+
for (int i = 0; i < size; i++) {
90+
TreeLinkNode treeLinkNode = queue.poll();
91+
System.out.println(treeLinkNode.val);
92+
System.out.println(treeLinkNode.next);
93+
next.add(treeLinkNode.left);
94+
next.add(treeLinkNode.right);
95+
}
96+
97+
queue.addAll(next);
98+
}
99+
}
100+
}

src/_116/116.populating-next-right-pointers-in-each-node.java

Lines changed: 2 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22

33
import datastructure.TreeLinkNode;
44

5-
import java.util.LinkedList;
6-
import java.util.Queue;
7-
85
/**
96
* Definition for binary tree with next pointer.
107
* public class TreeLinkNode {
@@ -23,78 +20,12 @@ public void connect(TreeLinkNode root) {
2320
}
2421

2522
if (root.right != null) {
26-
if (root.next != null)
23+
if (root.next != null) {
2724
root.right.next = root.next.left;
25+
}
2826
}
2927

3028
connect(root.left);
3129
connect(root.right);
3230
}
33-
34-
// I misunderstood the question...
35-
// it need to be solved with O(1) memory
36-
// because I used Queue, I violated the rule...
37-
// public void connect(TreeLinkNode root) {
38-
// if (root == null)
39-
// return;
40-
//
41-
// Queue<TreeLinkNode> queue = new LinkedList<>();
42-
// queue.add(root);
43-
//
44-
// while (!queue.isEmpty()) {
45-
// List<TreeLinkNode> current = new ArrayList<>();
46-
// current.addAll(queue);
47-
// queue.clear();
48-
//
49-
// Queue<TreeLinkNode> next = new LinkedList<>();
50-
// for (TreeLinkNode treeLinkNode : current) {
51-
// if (treeLinkNode.left != null)
52-
// next.add(treeLinkNode.left);
53-
// if (treeLinkNode.right != null)
54-
// next.add(treeLinkNode.right);
55-
// }
56-
//
57-
// for (int i = 0; i + 1 < current.size(); i++) {
58-
// current.get(i).next = current.get(i + 1);
59-
// }
60-
//
61-
// queue.addAll(next);
62-
// }
63-
// }
64-
65-
public static void main(String[] args) {
66-
TreeLinkNode one = new TreeLinkNode(1);
67-
TreeLinkNode two = new TreeLinkNode(2);
68-
TreeLinkNode three = new TreeLinkNode(3);
69-
TreeLinkNode four = new TreeLinkNode(4);
70-
TreeLinkNode five = new TreeLinkNode(5);
71-
TreeLinkNode six = new TreeLinkNode(6);
72-
TreeLinkNode seven = new TreeLinkNode(7);
73-
one.left = two;
74-
one.right = three;
75-
two.left = four;
76-
two.right = five;
77-
three.left = six;
78-
three.right = seven;
79-
80-
new Solution().connect(one);
81-
82-
Queue<TreeLinkNode> queue = new LinkedList<>();
83-
queue.add(one);
84-
85-
while (!queue.isEmpty()) {
86-
int size = queue.size();
87-
88-
Queue<TreeLinkNode> next = new LinkedList<>();
89-
for (int i = 0; i < size; i++) {
90-
TreeLinkNode treeLinkNode = queue.poll();
91-
System.out.println(treeLinkNode.val);
92-
System.out.println(treeLinkNode.next);
93-
next.add(treeLinkNode.left);
94-
next.add(treeLinkNode.right);
95-
}
96-
97-
queue.addAll(next);
98-
}
99-
}
10031
}

0 commit comments

Comments
 (0)