Follow up for problem "Populating Next Right Pointers in Each Node".
What if the given tree could be any binary tree? Would your previous solution still work?
Note:
For example,
Given the following binary tree,
1 / 2 3 / \ 4 5 7
After calling your function, the tree should look like:
1 -> NULL / 2 -> 3 -> NULL / \ 4-> 5 -> 7 -> NULL
与Populating Next Right Pointers in Each Node 基本一致 只是在向队列中加入子节点时要对左右节点分别判断 代码如下:
public class Solution { public void connect(TreeLinkNode root) { if(root==null) return ; int count=1; int level=0; Queue<TreeLinkNode> que =new LinkedList<TreeLinkNode>(); que.offer(root); while(que.isEmpty()!=true){ level=0; for(int i=0;i<count;i++){ root=que.peek(); que.poll(); if(i<count-1){ root.next=que.peek(); }else{ root.next=null; } if(root.left!=null){ que.offer(root.left); level++; } if(root.right!=null){ que.offer(root.right); level++; } } count=level; } } }
Populating Next Right Pointers in Each Node II
原文:http://blog.csdn.net/u012734829/article/details/42389677