zoukankan      html  css  js  c++  java
  • leetcode——116.填充每一个节点的下一个右侧节点指针

    虽然做出来了,但是好像效果并不是很好。。

    public Node connect(Node root) {
            if(root == null){
                return null;
            }
            //构建一个队列
            Queue<Node> queue = new ArrayDeque<>();
            queue.add(root);
            int n = 1;
            Node node = null;
            int i = 0;
            while(!queue.isEmpty()){
                while(i<Math.pow(2,n)-1){
                    node = queue.poll();
                    if(node != null) {
                        if(i != Math.pow(2,n)-2) {
                            node.next = queue.peek();
                        }else{
                            node.next = null;
                        }
                        if(node.left != null) {
                            queue.add(node.left);
                        }
                        if(node.right != null) {
                            queue.add(node.right);
                        }
                    }
                    i++;
                }
                n++;
            }
            return root;
        }

     用队列以及两层循环嵌套完成。


    别人的例子:

    public Node connect(Node root) {
            if(root == null) return null;
    
            if(root.left != null){
                root.left.next = root.right;
            }
            if(root.right != null && root.next != null){
                root.right.next = root.next.left;
            }
    
            connect(root.left);
            connect(root.right);
            return root;
        }

    多巧妙啊这个!!!

    ——2020.7.3

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    centos 7 安装ntp服务器
    centos 7编译安装nodejs 6.1
    修改IKAnalyzer配置
    Elasticsearch5.5.0安装head插件
    搭建ELASTICSEARCH实现中文分词搜索功能
    0426HTML基础:标签
    事件事件流
    纯css设置各行变色
    dom操作之元素的增删复制
    dom操作
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13228807.html
Copyright © 2011-2022 走看看