[Leetcode][第117题][JAVA][填充每个节点的下一个右侧节点指针][BFS]
生活随笔
收集整理的這篇文章主要介紹了
[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. 層次遍歷改進
【總結】
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]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [密码学基础][每个信息安全博士生应该知
- 下一篇: 【COCOS CREATOR 系列教程之