117. Populating Next Right Pointers in Each Node II

 1 class Solution {
 2     public void connect(TreeLinkNode root) {
 3         if(root == null) return;
 4         Queue<TreeLinkNode> queue = new LinkedList<>();
 5         queue.offer(root);
 6         int size = queue.size();
 7         while(!queue.isEmpty()) {
 8             TreeLinkNode prev = null;
 9             for(int i = 0; i < size; i++) {
10                 TreeLinkNode node = queue.poll();
11                 if(node.left != null) {  //注意不是空的再加进去 别忘了
12                     queue.offer(node.left);
13                 }
14                 if(node.right != null) {
15                     queue.offer(node.right);
16                 }
17                 if(i == 0) {
18                     prev = node;
19                 }else{
20                     prev.next = node;
21                     prev = node;
22                 }
23                 if(i == size - 1) {
24                     node.next = null;
25                 }
26             }
27             size = queue.size();
28         }
29     }
30 }

 

posted @ 2018-09-21 23:49  jasoncool1  阅读(150)  评论(0编辑  收藏  举报