[Leetcode][第117题][JAVA][填充每个节点的下一个右侧节点指针][BFS]
生活随笔
收集整理的這篇文章主要介紹了
[Leetcode][第117题][JAVA][填充每个节点的下一个右侧节点指针][BFS]
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【問(wèn)題描述】[中等]
【解答思路】
1. 層次遍歷
public Node connect(Node root) {if (root == null)return root;Queue<Node> queue = new LinkedList<>();queue.add(root);while (!queue.isEmpty()) {//每一層的數(shù)量int levelCount = queue.size();//前一個(gè)節(jié)點(diǎn)Node pre = null;for (int i = 0; i < levelCount; i++) {//出隊(duì)Node node = queue.poll();//如果pre為空就表示node節(jié)點(diǎn)是這一行的第一個(gè),//沒(méi)有前一個(gè)節(jié)點(diǎn)指向他,否則就讓前一個(gè)節(jié)點(diǎn)指向他if (pre != null) {pre.next = node;}//然后再讓當(dāng)前節(jié)點(diǎn)成為前一個(gè)節(jié)點(diǎn)pre = node;//左右子節(jié)點(diǎn)如果不為空就入隊(duì)if (node.left != null)queue.add(node.left);if (node.right != null)queue.add(node.right);}}return root;}2. 層次遍歷改進(jìn)
【總結(jié)】
1. 二叉樹(shù)的遍歷8種
前序遍歷
中序遍歷
后續(xù)遍歷
深度優(yōu)先搜索(DFS)
寬度優(yōu)先搜索(BFS)
除了上面介紹的5種以外,還有Morris(莫里斯)的前中后3種遍歷方式,總共也就這8種。所以只要遇到二叉樹(shù)相關(guān)的算法題,首先想到的就是上面的幾種遍歷方式,然后再稍加修改,基本上也就這個(gè)套路。
2.層次遍歷模板
public void levelOrder(TreeNode tree) {if (tree == null)return;Queue<TreeNode> queue = new LinkedList<>();queue.add(tree);//相當(dāng)于把數(shù)據(jù)加入到隊(duì)列尾部while (!queue.isEmpty()) {//poll方法相當(dāng)于移除隊(duì)列頭部的元素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);}}轉(zhuǎn)載鏈接: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/
總結(jié)
以上是生活随笔為你收集整理的[Leetcode][第117题][JAVA][填充每个节点的下一个右侧节点指针][BFS]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [密码学基础][每个信息安全博士生应该知
- 下一篇: 【COCOS CREATOR 系列教程之