(java)美团一面之(Populating Next Right Pointers in Each Node)

题意就是给一棵二叉树,让你变成这个样子:

1 -> NULL
/ \
2 -> 3 -> NULL
/ \ / \
4->5->6->7 -> NULL

思路是:层次遍历+添加next节点

public class Solution {
    public void connect(TreeLinkNode root) {
        Queue<TreeLinkNode> q=new LinkedList<TreeLinkNode>();
	        int count=0;
	        int temp=0;
	        if(root!=null)
	        {
	        	q.offer(root);
	        	count++;
	        }
	        while(!q.isEmpty()){
	        	TreeLinkNode tempnode=q.poll();
	        	count--;
	        	tempnode.next=null;
	        	if(tempnode.left!=null){
        			temp++;
        			q.offer(tempnode.left);
        		}
        		if(tempnode.right!=null){
        			temp++;
        			q.offer(tempnode.right);
        		}
	        	while(count>0){
	        		TreeLinkNode tempnode2=q.poll();
	        		tempnode.next=tempnode2;
	        		tempnode=tempnode.next;
	        		if(tempnode.left!=null){
	        			temp++;
	        			q.offer(tempnode.left);
	        		}
	        		if(tempnode.right!=null){
	        			temp++;
	        			q.offer(tempnode.right);
	        		}
	        		count--;
	        	}
	        	count=temp;
	        	temp=0;
	        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值