解题思路:
使用两个队列轮番记录每排结点的情况
提交代码:
class Solution {
public void connect(TreeLinkNode root) {
if(root==null) return;
Queue<TreeLinkNode> q1=new LinkedList<>();
Queue<TreeLinkNode> q2=new LinkedList<>();
q1.add(root);
TreeLinkNode n1,n2=null;
while(q1.size()>0) {
while(q1.size()>0) {
n1=q1.poll();
if(n2!=null) n2.next=n1;
if(n1.left!=null)
q2.add(n1.left);
if(n1.right!=null)
q2.add(n1.right);
n2=n1;
}
n2=null;
while(q2.size()>0) {
if(q2.size()>0) {
n1=q2.poll();
if(n2!=null) n2.next=n1;
if(n1.left!=null)
q1.add(n1.left);
if(n1.right!=null)
q1.add(n1.right);
n2=n1;
}
}
n2=null;
}
}
}
运行结果: