LeetCode每日一题 116. 填充每个节点的下一个右侧节点指针
题目链接
思路
层序遍历,记录每个节点的层数,另外使用一个前驱节点,判断层数是否相同,如果在同一层就修改next。
class Solution {public:Node* connect(Node* root) {if (!root) return root;pair<Node*, int> pre = make_pair(nullptr, -1);queue<pair<Node*, int>> q;q.push(make_pair(root, 0));while (!q.empty()) {pair<Node*, int> f = q.front();q.pop();if (pre.first && pre.second == f.second) pre.first->next = f.first;pre = f;if (f.first->left) q.push(make_pair(f.first->left, f.second+1));if (f.first->right) q.push(make_pair(f.first->right, f.second+1));}return root;}
};
利用完美二叉树的特性,同样使用层序遍历,每次处理一层的数据。
class Solution {public:Node* connect(Node* root) {if (!root) return root;queue<Node*> q;q.push(root);while (!q.empty()) {Node *pre = nullptr, *cur;int n = q.size();for (int i = 0; i < n; ++i) {cur = q.front();q.pop();if (pre) pre->next = cur;pre = cur;if (cur->left) {q.push(cur->left);}if (cur->right) {q.push(cur->right);}}}return root;}
};
LeetCode每日一题 116. 填充每个节点的下一个右侧节点指针相关推荐
- 2.<tag-二叉树和层序遍历相关题>-lt.116. 填充每个节点的下一个右侧节点指针 + lt.117. 填充每个节点的下一个右侧节点指针 II 1
lt.116. 填充每个节点的下一个右侧节点指针 [案例需求] [思路分析一, 迭代法] [代码实现] /* // Definition for a Node. class Node {public ...
- 力扣116. 填充每个节点的下一个右侧节点指针(C++,附思路)
题目链接在这里: 116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/popu ...
- 116. 填充每个节点的下一个右侧节点指针
2020-05-28 1.题目描述 填充每个节点的下一个右侧节点指针 2.题解 层次遍历即可 3.代码 /* // Definition for a Node. class Node { public ...
- 二叉树:填充每个节点的下一个右侧节点指针(java)
leetcode116:填充每个节点的下一个右侧节点指针 leetcode原题链接: 题目描述 递归解法一 递归方法二(效率更高) 二叉树专题 leetcode原题链接: 116题:填充每个节点的下一 ...
- leetcode116. 填充每个节点的下一个右侧节点指针
116. 填充每个节点的下一个右侧节点指针 难度中等128 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node {int val;Node ...
- 力扣 填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针 题目描述 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node { int val; Node *left ...
- [leetcode-117]填充每个节点的下一个右侧节点指针 II
(1 AC) 填充每个节点的下一个右侧节点指针 I是完美二叉树.这个是任意二叉树 给定一个二叉树 struct Node {int val;Node *left;Node *right;Node *n ...
- leetcode系列-116.填充每个节点的下一个右侧节点指针
题目描述: 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点. 二叉树定义如下: struct Node {int val;Node *left;Node *right;No ...
- LeetCode 116. 填充每个节点的下一个右侧节点指针
https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/ 难度:中等 给定一个完美二叉树,其所有叶 ...
- LeetCode 116. 填充每个节点的下一个右侧节点指针(递归循环)
文章目录 1. 题目 2. 解题 2.1 递归 2.2 循环 2.3 O(1)空间复杂度 1. 题目 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: stru ...
最新文章
- Cannot find SS.INI file for user *** 解决方法
- JS 04 Date_Math_String_Object
- 单引号和冒号不能存入mysql么_mysql单引号和双引号的用法
- oracle基础琐碎总结-----Where和Having的区别与联系
- python 定义一个负数_其实Python不难学(4):Python如何处理文本数据
- 谷歌发布 MediaPipe Holistic,实现移动端同时进行人脸、手部和人体关键点检测跟踪...
- hibernate SQLQuery实践指南
- Linux开启和关闭防火墙的方法
- 通俗易懂!视觉slam第五部分——slam数学表示二
- mysql left join测试
- 《网络营销实战密码》书评征文获奖名单揭晓
- vmware10密钥
- python ipad 微信_用Python玩微信(非常详细)
- asp.net汉字转拼音 可返回拼音首字母
- There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED]
- ro服务器物品掉率修改,给冒险者们的一封致歉信 社交服务器持续优化 仙境传说手游常见BUG解答...
- java gps经纬度坐标转高德坐标_RN中Geolocation的经纬度坐标转换为高德地图坐标
- chrome播放rtsp视频使用vgx插件
- 南都周刊 别了 老兵乔布斯
- 药到痰出——喉咙不再有痰