zoukankan      html  css  js  c++  java
  • 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.
    */

  • 相关阅读:
    bzoj3302
    bzoj1264
    听风
    bzoj5073
    bzoj2144
    bzoj1263
    bzoj3653
    Docker 入门 2 镜像基本操作
    Docker 入门 1 准备 Docker 环境
    Docker Hub 镜像加速
  • 原文地址:https://www.cnblogs.com/zhengjiankang/p/3680276.html
Copyright © 2011-2022 走看看