一、     题目

对于结构体:struct TreeLinkNode {

TreeLinkNode *left;

TreeLinkNode *right;

TreeLinkNode *next;

}

填充全部的结点假设存在右側的节点。则指上(next)右节点。假设没有右側的节点。那么就指上NULL,最初都指上NULL。

提示:仅仅能使用给定的空间,而且你能够觉得给定的二叉树是一个完美的二叉树。

比如:

1

/ \

2   3

/ \   \

4  5    7

处理后:

1 -> NULL

/ \

2 -> 3 -> NULL

/ \   \

4-> 5 -> 7 -> NULL

二、     分析

1、         空节点就直接返回

2、         左节点非空则连接右节点

3、         子节点连接兄弟节点的子节点。则root.right.next = root.next.left;

/**
* 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) {
if(root==NULL) return;
if(root->left!=NULL) root->left->next=root->right;
if(root->right!=NULL&&root->next!=NULL)
root->right->next=root->next->left; connect(root->left);
connect(root->right);
}
}; BFS
/**
* 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) {
// Note: The Solution object is instantiated only once and is reused by each test case.
//breadth-first traversal
queue<TreeLinkNode *> bfsq;
int levelCnt=0;
int level2=0; if(root==NULL) return;
bfsq.push(root);
levelCnt++;
TreeLinkNode *prevList=NULL;
TreeLinkNode *topS=NULL; while(!bfsq.empty())
{
topS=bfsq.front();
bfsq.pop();
levelCnt--; if(topS->left!=NULL && topS->right!=NULL)
{
bfsq.push(topS->left);
level2++;
bfsq.push(topS->right);
level2++;
} if(prevList!=NULL)
prevList->next=topS;
prevList=topS; if(levelCnt==0)
{
levelCnt=level2;
level2=0;
prevList=NULL;
} }
}
};

Leetcode:populating_next_right_pointers_in_each_node题解的更多相关文章

  1. LeetCode OJ 题解

    博客搬至blog.csgrandeur.com,cnblogs不再更新. 新的题解会更新在新博客:http://blog.csgrandeur.com/2014/01/15/LeetCode-OJ-S ...

  2. Leetcode 简略题解 - 共567题

    Leetcode 简略题解 - 共567题     写在开头:我作为一个老实人,一向非常反感骗赞.收智商税两种行为.前几天看到不止两三位用户说自己辛苦写了干货,结果收藏数是点赞数的三倍有余,感觉自己的 ...

  3. LeetCode 算法题解 js 版 (001 Two Sum)

    LeetCode 算法题解 js 版 (001 Two Sum) 两数之和 https://leetcode.com/problems/two-sum/submissions/ https://lee ...

  4. leetcode & lintcode 题解

    刷题备忘录,for bug-free 招行面试题--求无序数组最长连续序列的长度,这里连续指的是值连续--间隔为1,并不是数值的位置连续 问题: 给出一个未排序的整数数组,找出最长的连续元素序列的长度 ...

  5. LeetCode一句话题解

    深度优先搜索 人生经验 1. 需要输出所有解.并由于元素集有重复元素,要求返回的结果需要去重的情况,可考虑使用值对应数量的map,然后分别考虑依次取不同数量该值的可能. LeetCode39 题目:给 ...

  6. [leetcode] 位操作题解

    子集 题目[78]:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 示例: 输入: nums = [1,2,3] 输出: [ [3],   [1],   [2],   [ ...

  7. LeetCode 中等题解(3)

    34 在排序数组中查找元素的第一个和最后一个位置 Question 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂 ...

  8. LeetCode 中等题解(1)

    16 最接近的三数之和 Question 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和. ...

  9. leetcode个人题解——two sum

    这是leetcode第一题,通过较为简单. 第一题用来测试的,用的c,直接暴力法过, /** * Note: The returned array must be malloced, assume c ...

随机推荐

  1. PHP开源网

    网站地址http://www.cnblogs.com/huijieoo/

  2. Noip 2016 Day1 题解

    老师让我们刷历年真题, 然后漫不经心的说了一句:“你们就先做做noip2016 day1 吧” ...... 我还能说什么,,,,,老师你这是明摆着伤害我们啊2333333333 预计分数:100+2 ...

  3. OPENCV(4) —— ImgProc

    2D图像滤波器基础类BaseFilter:dst(x,y) = F(src(x,y), src(x+1,y)... src(x+wdith-1,y), src(y+1,x)... src(x+widt ...

  4. Python正则表达式初识(六)

    继续分享Python正则表达式基础,今天给大家分享的正则表达式特殊符号是“[]”.中括号十分实用,其有特殊含义,其代表的意思是中括号中的字符只要满足其中任意一个就可以.其用法一共有三种,分别对其进行具 ...

  5. 【2017 Multi-University Training Contest - Team 1 1011】KazaQ's Socks

    [Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6043 [Description] 一个人壁橱里有n双袜子,每天早上取一双最小下标的袜子,然后晚上放 ...

  6. 为什么我们须要复杂的password

    前两天我打开邮箱一看.收到公司1331一封要求改动邮箱password的邮件. 为什么我们须要一个复杂的password呢?尽管我一直以来设置的password都非常复杂.可是公司这次要求改动pass ...

  7. Spark Tachyon实战应用(配置启动环境、运行spark和运行mapreduce)

    Tachyon实战应用 配置及启动环境 修改spark-env.sh 启动HDFS 启动Tachyon Tachyon上运行Spark 添加core-site.xml 启动Spark集群 读取文件并保 ...

  8. javafx KeyCombination

    import javafx.application.Application; import javafx.application.Platform; import javafx.event.Actio ...

  9. 使用spring-boot 国际化配置所碰到的乱码问题

    写好html静态页面 ,  也加上了编码格式 , 获取国际化展示在浏览器中还是存在乱码 , 开始以为是浏览器编码格式问题 , 做过处理后任没有得到解决 , 具体的处理方案如下: <meta ht ...

  10. 【2017 Multi-University Training Contest - Team 2】Maximum Sequence

    [Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6047 [Description] 给你一个数列a和一个数列b; 只告诉你a的前n项各是什么; 然后 ...