• 117 Populating Next Right Pointers in Each Node II 每个节点的右向指针 II


    这是“每个节点的右向指针”问题的进阶。
    如果给定的树可以是任何二叉树,该怎么办?你以前的解决方案仍然有效吗?
    注意:
        你只能使用恒定的空间。
    例如,
    给定以下二叉树,
             1
           / 
          2    3
         /    
        4   5    7
    调用你的函数后,树应该看起来像这样:
             1 -> NULL
           / 
          2 -> 3 -> NULL
         /    
        4-> 5 -> 7 -> NULL

    详见:https://leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/description/

    Java实现:

    /**
     * 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;
            }
            LinkedList<TreeLinkNode> que=new LinkedList<TreeLinkNode>();
            que.offer(root);
            while(!que.isEmpty()){
                //记录本层节点的个数
                int size=que.size();
                for(int i=0;i<size;++i){
                    TreeLinkNode cur=que.poll();
                    //最后一个节点的next是null,不做处理
                    if(i<size-1){
                        TreeLinkNode next=que.peek();
                        cur.next=next;
                    }
                    if(cur.left!=null){
                        que.offer(cur.left);
                    }
                    if(cur.right!=null){
                        que.offer(cur.right);
                    }
                }
            }
        }
    }
    

    参考:https://segmentfault.com/a/1190000003465911

  • 相关阅读:
    Mysql 知识点
    vscode debug No module named flask
    c# 多线程概览
    c# 遍历属性
    排序算法
    sqlserver 评估过期
    HttpHandler和ashx使用Session 出现未初始化异常
    with(window) onload=onresize=function(){} 写法
    mAP(mean Average Precision)应用(转)
    int和double究竟占多少个字节?c++等
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8721752.html
Copyright © 2020-2023  润新知