• Populating Next Right Pointers in Each Node II


     1 /**
     2  * Definition for binary tree with next pointer.
     3  * struct TreeLinkNode {
     4  *  int val;
     5  *  TreeLinkNode *left, *right, *next;
     6  *  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     void connect(TreeLinkNode *root) {
    12         TreeLinkNode* cur = root;
    13         while(cur) {
    14             TreeLinkNode* node = cur;
    15             TreeLinkNode* last = NULL;
    16             cur = NULL;
    17             while(node) {
    18                 TreeLinkNode* left = node->left;
    19                 TreeLinkNode* right = node->right;
    20                 if(left || right) {
    21                     if(last) last->next = left ? left : right;
    22                     if(left) left->next = right;
    23                     if(!cur) cur = left ? left : right;
    24                     last = right ? right : left;
    25                 }
    26                 node = node->next;
    27             }
    28         }
    29     }
    30 };

    Follow up for problem "Populating Next Right Pointers in Each Node".
    What if the given tree could be any binary tree? Would your previous solution still work?
    Note:
    You may only use constant extra space.
    For example,
    Given the following binary tree,
    1
    /
    2 3
    /
    4 5 7
    After calling your function, the tree should look like:
    1 -> NULL
    /
    2 -> 3 -> NULL
    /
    4-> 5 -> 7 -> NULL

    Solution: 1. iterative way with CONSTANT extra space.
    2. iterative way + queue. Contributed by SUN Mian(孙冕).
    3. tail recursive solution.
    */

  • 相关阅读:
    转:BIOS的恢复技术之Top Swap的原理应用
    半硬化树脂PP的型号
    PADS常用画板过程
    ad2014注册出现:注册
    CPU处理多任务——中断与轮询方式比较
    PDS常用快捷键
    方法三破解:Excel工作表保护密码
    【Linux指标】内存篇
    mac apt-get--> Homebrew
    20180113Go匿名函数和闭包
  • 原文地址:https://www.cnblogs.com/zhengjiankang/p/3680276.html
Copyright © 2020-2023  润新知