[Leetcode][第117题][JAVA][填充每个节点的下一个右侧节点指针][BFS]
【问题描述】[中等]
【解答思路】
1. 层次遍历
public Node connect(Node root) {if (root == null)return root;Queue<Node> queue = new LinkedList<>();queue.add(root);while (!queue.isEmpty()) {//每一层的数量int levelCount = queue.size();//前一个节点Node pre = null;for (int i = 0; i < levelCount; i++) {//出队Node node = queue.poll();//如果pre为空就表示node节点是这一行的第一个,//没有前一个节点指向他,否则就让前一个节点指向他if (pre != null) {pre.next = node;}//然后再让当前节点成为前一个节点pre = node;//左右子节点如果不为空就入队if (node.left != null)queue.add(node.left);if (node.right != null)queue.add(node.right);}}return root;}
2. 层次遍历改进
public Node connect(Node root) {if (root == null)return root;//cur我们可以把它看做是每一层的链表Node cur = root;while (cur != null) {//遍历当前层的时候,为了方便操作在下一//层前面添加一个哑结点(注意这里是访问//当前层的节点,然后把下一层的节点串起来)Node dummy = new Node(0);//pre表示访下一层节点的前一个节点Node pre = dummy;//然后开始遍历当前层的链表while (cur != null) {if (cur.left != null) {//如果当前节点的左子节点不为空,就让pre节点//的next指向他,也就是把它串起来pre.next = cur.left;//然后再更新prepre = pre.next;}//同理参照左子树if (cur.right != null) {pre.next = cur.right;pre = pre.next;}//继续访问这样行的下一个节点cur = cur.next;}//把下一层串联成一个链表之后,让他赋值给cur,//后续继续循环,直到cur为空为止cur = dummy.next;}return root;}
【总结】
1. 二叉树的遍历8种
前序遍历
中序遍历
后续遍历
深度优先搜索(DFS)
宽度优先搜索(BFS)
除了上面介绍的5种以外,还有Morris(莫里斯)的前中后3种遍历方式,总共也就这8种。所以只要遇到二叉树相关的算法题,首先想到的就是上面的几种遍历方式,然后再稍加修改,基本上也就这个套路。
2.层次遍历模板
public void levelOrder(TreeNode tree) {if (tree == null)return;Queue<TreeNode> queue = new LinkedList<>();queue.add(tree);//相当于把数据加入到队列尾部while (!queue.isEmpty()) {//poll方法相当于移除队列头部的元素TreeNode node = queue.poll();System.out.println(node.val);if (node.left != null)queue.add(node.left);if (node.right != null)queue.add(node.right);}}
转载链接:https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii/solution/bfsjie-jue-zui-hao-de-ji-bai-liao-100de-yong-hu-by/
[Leetcode][第117题][JAVA][填充每个节点的下一个右侧节点指针][BFS]相关推荐
- 2.<tag-二叉树和层序遍历相关题>-lt.116. 填充每个节点的下一个右侧节点指针 + lt.117. 填充每个节点的下一个右侧节点指针 II 1
lt.116. 填充每个节点的下一个右侧节点指针 [案例需求] [思路分析一, 迭代法] [代码实现] /* // Definition for a Node. class Node {public ...
- 二叉树:填充每个节点的下一个右侧节点指针(java)
leetcode116:填充每个节点的下一个右侧节点指针 leetcode原题链接: 题目描述 递归解法一 递归方法二(效率更高) 二叉树专题 leetcode原题链接: 116题:填充每个节点的下一 ...
- 力扣116. 填充每个节点的下一个右侧节点指针(C++,附思路)
题目链接在这里: 116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/popu ...
- [leetcode-117]填充每个节点的下一个右侧节点指针 II
(1 AC) 填充每个节点的下一个右侧节点指针 I是完美二叉树.这个是任意二叉树 给定一个二叉树 struct Node {int val;Node *left;Node *right;Node *n ...
- leetcode116. 填充每个节点的下一个右侧节点指针
116. 填充每个节点的下一个右侧节点指针 难度中等128 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node {int val;Node ...
- 116. 填充每个节点的下一个右侧节点指针
2020-05-28 1.题目描述 填充每个节点的下一个右侧节点指针 2.题解 层次遍历即可 3.代码 /* // Definition for a Node. class Node { public ...
- 力扣 填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针 题目描述 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node { int val; Node *left ...
- LeetCode 117. 填充每个节点的下一个右侧节点指针 II(递归循环)
文章目录 1. 题目 2. 解题 2.1 递归 2.2 queue循环 2.3 利用next循环 1. 题目 填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找不到下一个右侧节点,则 ...
- 49. Leetcode 117. 填充每个节点的下一个右侧节点指针 II (二叉树-二叉树遍历)
给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找不 ...
- [leetcode] 117 填充每个节点的下一个右侧节点指针
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node { int val; Node *left; Node *right; ...
最新文章
- nginx 转发慢_为啥 Nginx 能轻松淦到几万并发?
- SpringMVC @RequestBody接收Json对象字符串
- android setContentView()
- Javascript教程:AngularJS的五个超酷特性
- 初二计算机辅导记录,(初中信息技术兴趣小组活动记录.doc
- Python学到什么程度才可以去找工作?
- python3 mysql同步_MySQL上云同步脚本-Python3
- 程序员的3年之痒改变的不止薪水(转载)
- TIOBE 1 月榜单:Python年度语言四连冠,C 语言再次第一
- SAS宏保存以便快速调用的三种解决方案(转载)
- leetCode-995:K 连续位的最小翻转次数
- 人走茶凉!三星关闭最后一家中国手机工厂 因为打不过其他国产厂商?
- Java多个注解合并_Java注解合并,注解继承
- oracle 12c 备份pdb下数据库
- php -- 目录、路径、磁盘
- mysql explain和profiling
- qtp测试 java web_QTP之web常用对象
- 关于给电鼓音源增加鼓盘或者DIY鼓盘(DIY镲片)的方法
- 常见电商项目的数据库表设计(MySQL版)
- 写一个VSCode插件
热门文章
- mysql string types ---- mysql 字符类型详解
- python selenium与自动化
- testNG之组测试
- lighttpd,thttpd,shttpd - 轻量级WebServer介绍
- 所谓语音合成 是计算机根据语言学,计算语言学完整1
- uoni扫地机器人好用吗_扫地机器人好用吗?了解性能看这篇
- Android char数据类型乱码��解决方法
- No field gDefault in class Landroid/app/ActivityManagerNative
- 微信 wx.chooseImage 上传图片 的思考
- react元素显隐控制