zoukankan      html  css  js  c++  java
  • LeetCode117----填充同一层兄弟节点

    给定一个二叉树

    struct TreeLinkNode {
      TreeLinkNode *left;
      TreeLinkNode *right;
      TreeLinkNode *next;
    }
    

    填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL

    初始状态下,所有 next 指针都被设置为 NULL

    说明:

    • 你只能使用额外常数空间。
    • 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。

    示例:

    给定二叉树,

         1
       /  
      2    3
     /     
    4   5    7
    

    调用你的函数后,该二叉树变为:

         1 -> NULL
       /  
      2 -> 3 -> NULL
     /     
    4-> 5 -> 7 -> NULL

    这里要求额外的空闲复杂度是常数项的,所以我们这里考虑用俩引用来解决!
    定义一个queue引用,该引用一般指向同一层各个节点,cur引用一般代表的是queue引用的子节点,level引用一般代表的是同一层节点的起始节点,这个引用一般指向的对象不会变
    代码如下:
    public class LeetCode117 {
    	public static class TreeLinkNode {
    		int val;
    		TreeLinkNode left;
    		TreeLinkNode right;
    		TreeLinkNode next;
    
    		TreeLinkNode(int x) {
    			val = x;
    		}
    	}
    
    	public void connect(TreeLinkNode root) {
    		TreeLinkNode queue = root;
    		TreeLinkNode level = new TreeLinkNode(0);
    		while (queue != null) {
    			level.next = null;
    			TreeLinkNode cur = level;
    			while (queue != null) {
    				if (queue.left != null) {
    					cur.next = queue.left;
    					cur = cur.next;
    				}
    				if (queue.right != null) {
    					cur.next = queue.right;
    					cur = cur.next;
    				}
    				queue = queue.next;
    			}
    			queue = level.next;
    		}
    	}
    }
    

      

     
  • 相关阅读:
    angularJS
    WebSocket通信协议
    重写ajax方法实现异步请求session过期时跳转登录页面
    npm(cnpm)介绍(安装gulp)
    grunt安装与配置
    前端学习之jquery
    前端基础之CSS
    前端基础html
    激活
    socket 网络通信(基于tcp协议)以及粘包解决方案
  • 原文地址:https://www.cnblogs.com/Booker808-java/p/9069013.html
Copyright © 2011-2022 走看看