let 116. Populating Next Right Pointers in Each Node

主题思想: 这个还是层级遍历的变形。 层级遍历,需要一个队列数据结构作为辅助,然后记录每个层有多少个节点,来区分属于哪一个层。 只需要对每一层做相同的操作: 把相同层的节点连起来就可以了。
所以代码和层级遍历,相差无几,
AC 代码:

/**
 * Definition for binary tree with next pointer.
 * public class TreeLinkNode {
 *     int val;
 *     TreeLinkNode left, right, next;
 *     TreeLinkNode(int x) { val = x; }
 * }
 */
public class Solution {
    public void connect(TreeLinkNode root) {

        if(root==null) return ;
        Queue<TreeLinkNode> q=new LinkedList<TreeLinkNode>();

        TreeLinkNode node=null;
        q.offer(root);
        int levelSize=0;

        TreeLinkNode prev=null;
        while(!q.isEmpty()){
            levelSize=q.size();
            prev=null;
            for(int i=0;i<levelSize;i++){
                node=q.poll();
                if(prev==null) prev=node;
                else{
                    prev.next=node;
                    prev=prev.next;
                }
               if(node.left!=null) q.offer(node.left);
                if(node.right!=null) q.offer(node.right);
            }
        }
        return ;
    }
}

猜你喜欢

转载自blog.csdn.net/the_conquer_zzy/article/details/79210142
今日推荐