【leetcode】117.(Medium)Populating Next Right Pointers in Each Node II

解题思路:
使用两个队列轮番记录每排结点的情况


提交代码:

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;
    	}
    }
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/AXIMI/article/details/85450822