频道栏目
首页 > 资讯 > 其他 > 正文

Populating Next Right Pointers in Each Node II

18-01-18        来源:[db:作者]  
收藏   我要投稿

Populating Next Right Pointers in Each Node II。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:

  • You may only use constant extra space.

    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
    /**
     * 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 ;
            }
            ArrayDeque que = new ArrayDeque<>();
            que.offer(root);
            int size = 0;
            while (!que.isEmpty()){
                size = que.size();
                TreeLinkNode tmp;
                TreeLinkNode pre = null;
                for (int i = 0; i < size; ++ i){
                    tmp = que.poll();
                    if (tmp.left != null){
                        que.offer(tmp.left);
                    }
                    if (tmp.right != null){
                        que.offer(tmp.right);
                    }
                    if (pre != null){
                        pre.next = tmp;
                    }
                    pre = tmp;
                }
            }
        }
    }
相关TAG标签
上一篇:编程开发Pascal's Triangle解析
下一篇:算法系列15天速成——第一天 七大经典排序【上】
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站