• populating-next-right-pointers-in-each-node


    /**
    *
    * @author gentleKay
    * Given a binary tree
    * Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set toNULL.
    * Initially, all next pointers are set toNULL.
    * Note:
    * You may only use constant extra space.
    * You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
    * For example,
    * Given the following perfect binary tree,
    * 1
    /
    2 3
    / /
    4 5 6 7
    * After calling your function, the tree should look like:
    * 1 -> NULL
    /
    2 -> 3 -> NULL
    / /
    4->5->6->7 -> NULL* 给定二叉树

    * 填充下一个指针以指向其右下一个节点。如果没有下一个右节点,则应将下一个指针设置为tull。
    * 最初,所有下一个指针都设置为“否”。
    * 注:
    * 您只能使用恒定的额外空间。
    * 您可以假定它是一个完美的二叉树(即,所有的叶都在同一级别,并且每个父级都有两个子级)。
    * 例如,
    * 给定以下完美的二叉树,
    *   1
      /
       2 3
         / /
       4 5 6 7
    * 调用函数后,树应如下所示:
    *     1 -> NULL
          /
       2 -> 3 -> NULL
        / /
    4->5->6->7 -> NULLs
    */

    根据层次来遍历二叉树,用队列来进行存储节点,来进行遍历。每一层的二叉树都将放入到 list 当中,在遍历 list 进行指针指向下一节点的操作。

    import java.util.*;
    
    /**
     * 
     * @author gentleKay
     * Given a binary tree
     * Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set toNULL.
     * Initially, all next pointers are set toNULL.
     * Note:
     * You may only use constant extra space.
     * You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
     * For example,
     * Given the following perfect binary tree,
     *       1
           /  
          2    3
         /   / 
        4  5  6  7
     * After calling your function, the tree should look like:
     *       1 -> NULL
           /  
          2 -> 3 -> NULL
         /   / 
        4->5->6->7 -> NULL
    
     * 给定二叉树
     * 填充下一个指针以指向其右下一个节点。如果没有下一个右节点,则应将下一个指针设置为tull。
     * 最初,所有下一个指针都设置为“否”。
     * 注:
     * 您只能使用恒定的额外空间。
     * 您可以假定它是一个完美的二叉树(即,所有的叶都在同一级别,并且每个父级都有两个子级)。
     * 例如,
     * 给定以下完美的二叉树,
     *       1
           /  
          2    3
         /   / 
        4  5  6  7
     * 调用函数后,树应如下所示:
     *       1 -> NULL
           /  
          2 -> 3 -> NULL
         /   / 
        4->5->6->7 -> NULLs
     */
    
    public class Main15 {
    	public static void main(String[] args) {
    		TreeLinkNode root = new TreeLinkNode(4);
    		root.left = new TreeLinkNode(2);
    		root.left.left = new TreeLinkNode(1);
    		root.left.right  = new TreeLinkNode(3);
    		
    		root.right = new TreeLinkNode(6);
    		root.right.left = new TreeLinkNode(5);
    		root.right.right = new TreeLinkNode(7);
    		
    		Main15.connect(root);
    	}
    	
    	public static class TreeLinkNode {
    		int val;
    		TreeLinkNode left, right, next;
    		TreeLinkNode(int x) { val = x; }
    	}
    	
    	public static void connect(TreeLinkNode root) {
            if (root == null) {
            	return;
            }
            
            Queue<TreeLinkNode> queue = new LinkedList<>();
            queue.add(root);
            
            while (!queue.isEmpty()) {
            	ArrayList<TreeLinkNode> array = new ArrayList<>();
            	int len = queue.size();
            	for (int i=0;i<len;i++) {
            		TreeLinkNode head = queue.poll();
            		array.add(head);
            		if (head.left != null) {
            			queue.add(head.left);
            		}
            		if (head.right != null) {
            			queue.add(head.right);
            		}
            	}
            	TreeLinkNode head = array.get(0);
            	for (int i=1;i<array.size();i++) {
            		head.next = array.get(i);
            		head = head.next;
            	}
            	head.next = null;
            }
            
        }
    

     

  • 相关阅读:
    吃喝玩乐AI黑科技
    容器的介绍
    java线程池
    2020牛客暑期多校训练营(第三场)
    zabbix5.0快速搭建
    prometheus中的alertmanage配置文件详解
    gitlab的api操作
    vim编辑器可视模式
    sql语句执行顺序详解
    sql连表查询练习题
  • 原文地址:https://www.cnblogs.com/strive-19970713/p/11250581.html
Copyright © 2020-2023  润新知