zoukankan      html  css  js  c++  java
  • Populating Next Right Pointers in Each Node II

    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
    

     

    /**
     * Definition for binary tree with next pointer.
     * struct TreeLinkNode {
     *  int val;
     *  TreeLinkNode *left, *right, *next;
     *  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
     * };
     */
    class Solution {
    public:
        void connect(TreeLinkNode *root) {
            while (root) {
                TreeLinkNode * next = NULL; // the first node of next level
                TreeLinkNode * prev = NULL; // previous node on the same level
                for (; root; root=root->next) {
                    if (!next) next = root->left?root->left:root->right;
        
                    if (root->left) {
                        if (prev) prev->next = root->left;
                        prev = root->left;
                    }
                    if (root->right) {
                        if (prev) prev->next = root->right;
                        prev = root->right;
                    }
                }
                root = next; // turn to next level
            }
        }
    };
    

     

      

     

  • 相关阅读:
    12.精益敏捷项目管理——产品协调小组笔记
    打字游戏
    提升权限
    下载者
    SMTP实现发送邮箱2(封装版)
    SMTP实现发送邮箱1
    电子邮件协议详解
    JSON运用在文件
    JSON函数表2
    JSON函数表1
  • 原文地址:https://www.cnblogs.com/winscoder/p/3535367.html
Copyright © 2011-2022 走看看