zoukankan      html  css  js  c++  java
  • LeetCode: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

    思路:首先想到的是BFS。

    可是BFS须要借助队列,这样就不能满足题目空间复杂度的要求。难点在于怎样不用多余的空间完毕树的遍历。

    解决问题须要用到树节点结构中包括的next域。

    能够借助next完毕不用队列的BFS。


    代码:

    void Solution::connect(TreeLinkNode * root)
    {
        if(root == NULL)
            return;
        TreeLinkNode * cur;
        while(root->left != NULL)//当root->left为NULL时,表示已经遍历到了最后一层,此时已经完毕了全部next的赋值
        {
            cur = root;//在遍历每一层时,cur指针用来指向当前所要处理的节点
            while(cur != NULL)//cur为NULL时,表示当前这一层已经处理完
            {
                if(cur->left != NULL)
                    cur->left->next = cur->right;//当前节点左子节点的next域指向当前节点的右子节点
                if(cur->next != NULL)
                    cur->right->next = cur->next->left;//当前节点的右子节点的next域指向当前节点next域所指节点的左子节点
                cur = cur->next;
            }
            root = root->left;//开始处理一个新的水平
        }
    }


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    实验0 了解和熟悉操作系统一、目的和要求
    读后感
    有穷自动机自动转化
    文法分析
    词法分析随笔
    git操作笔记
    面试题汇总
    MYSQL数据库设计
    Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
    invalid comparison:java.util.Date and java.lang.String
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4736438.html
Copyright © 2011-2022 走看看