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;//开始处理一个新的水平
        }
    }


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

  • 相关阅读:
    Apache虚拟目录的建立
    自制户外登山地图傻瓜书
    经纬度与高克投影转换代码(VB)
    2000国家大地坐标系
    js格式化 Thu Mar 07 2019 12:00:00 GMT+0800 (中国标准时间) 及相互转化
    Javascript农历与公历相互转换
    Numpy
    日期多选插件Kalendae.js
    Scrapy项目实战
    bootstrapdatetimepicker添加支持显示农历节假日信息。
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4736438.html
Copyright © 2011-2022 走看看