• 116. Populating Next Right Pointers in Each Node


     

    Given a binary tree

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

    Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.

    Initially, all next pointers are set to NULL.

    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



    默认每个节点的next 都是空。
    2层循环,第一层循环是层数,用level_start控制,
    第二层循环,循环每层的每个节点,来构建next 指针,
    构建next指针时,有3种情况:1 左指针指向右指针
    2 右指针不是当层最末尾的指针,右指针指向父亲节点next的左指针。
    3
    右指针是当层最末尾的指针,不用处理,因为默认每个节点的next都是指向null的。

     1 public class Solution {
     2     public void connect(TreeLinkNode root) {
     3         TreeLinkNode level_start=root;
     4         while(level_start!=null){
     5             TreeLinkNode cur=level_start;
     6             while(cur!=null){
     7                 if(cur.left!=null) cur.left.next=cur.right;
     8                 if(cur.right!=null && cur.next!=null) cur.right.next=cur.next.left;
     9                 
    10                 cur=cur.next;
    11             }
    12             level_start=level_start.left;
    13         }
    14     }
    15 }
  • 相关阅读:
    poj 1159
    poj1102
    在WebDynpro中的table控件中添加Search help的方法
    用Writer写的第一篇日志
    上路
    C# IList, ArrayList与List的区别详解 & 简单用法举例
    诸葛亮为什么难以入围千古名相之列
    Silverlight5.0正式发布附下载地址
    arcgis server 9.3 问题总结[转]
    AO 直接调用GeoProcessing 工具
  • 原文地址:https://www.cnblogs.com/zle1992/p/7784711.html
Copyright © 2020-2023  润新知