• 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
            }
        }
    };
    

     

      

     

  • 相关阅读:
    Docker GitLab镜像部署
    Kubernetes集群部署之三ETCD集群部署
    Kubernetes集群部署之二CA证书制作
    Kubernetes集群部署之一系统环境初始化
    docker开源仓库Harbor部署笔记
    git分支
    git高清技能图
    vue+uwsgi+nginx部署路飞学城
    git基础
    git安装与初始化
  • 原文地址:https://www.cnblogs.com/winscoder/p/3535367.html
Copyright © 2020-2023  润新知