成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起聊聊十五周算法—BFS

開發(fā) 前端
「BFS相對于DFS的最主要的區(qū)別是:BFS找到的路徑一定是最短的,但代價就是空間復(fù)雜度比DFS大很多。」

「BFS的核心思想是把一些問題抽象成圖,從一個點開始,向四周開始擴(kuò)散。一般來說,寫B(tài)FS算法都是用隊列這種數(shù)據(jù)結(jié)構(gòu),每次將一個節(jié)點周圍的所有節(jié)點加入隊列。」

「BFS相對于DFS的最主要的區(qū)別是:BFS找到的路徑一定是最短的,但代價就是空間復(fù)雜度比DFS大很多。」

「BFS出現(xiàn)的常見場景:問題的本質(zhì)就是讓你在一幅圖中找到從起點start到終點target的最近距離」

二叉樹的最小深度

給定一個二叉樹,找出其最小深度。

最小深度是從根節(jié)點到最近葉子節(jié)點的最短路徑上的節(jié)點數(shù)量。

說明:葉子節(jié)點是指沒有子節(jié)點的節(jié)點。

示例 1:

圖片

輸入:root = [3,9,20,null,null,15,7] 輸出:2

// 找最短路徑,用BFS
// 1. 首先明確起點start和終點target是什么?
// 起點就是root根節(jié)點,終點就是最靠近根節(jié)點的那個葉子節(jié)點
// 2、 怎么判斷達(dá)到了終點
// 葉子節(jié)點就是兩個子節(jié)點都是null的節(jié)點

function minDepth(root) {
    const bfs = (root) => {
        if (!root) {
            return 0;
        }

        // root本身就是一層,depth初始化為1
        let depth = 1;
        const queue = [root];

        while (queue.length > 0) {
            const size = queue.length;

            // 遍歷當(dāng)前存在隊列中的數(shù)據(jù)
            for (let i = 0; i < size; i++) {
                const cur = queue.shift();

                // 將左右子節(jié)點存入隊列
                if (cur.left) {
                    queue.push(cur.left);
                }
                if (cur.right) {
                    queue.push(cur.right);
                }

                if (cur.left === null && cur.right === null) {
                    return depth;
                }
            }

            // 遍歷完一層之后增加步數(shù)
            depth++;
        }

        return depth;
    }

    return bfs(root);
}

填充每個節(jié)點的下一個右側(cè)節(jié)點指針

給定一個 完美二叉樹 ,其所有葉子節(jié)點都在同一層,每個父節(jié)點都有兩個子節(jié)點。二叉樹定義如下:

struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每個 next 指針,讓這個指針指向其下一個右側(cè)節(jié)點。如果找不到下一個右側(cè)節(jié)點,則將 next 指針設(shè)置為 NULL。

初始狀態(tài)下,所有 next 指針都被設(shè)置為 NULL。

示例 1:

圖片

輸入:root = [1,2,3,4,5,6,7] 輸出:[1,#,2,3,#,4,5,6,7,#] 解釋:給定二叉樹如圖 A 所示,你的函數(shù)應(yīng)該填充它的每個 next 指針,以指向其下一個右側(cè)節(jié)點,如圖 B 所示。序列化的輸出按層序遍歷排列,同一層節(jié)點由 next 指針連接,'#' 標(biāo)志著每一層的結(jié)束

// 典型的通過BFS解決
function connect(root) {
    if (root === null) {
        return root;
    }
    const list = [root];

    while (list.length > 0) {
        const size = list.length;

        for (let i = 0; i < size; i++) {
            const preNode = list.shift();
            // 進(jìn)行連接
            if (i === size - 1) {
                preNode.next = null;
            } else {
                preNode.next = list[0];
            }
            // 獲取下一個元素,將內(nèi)容填充到棧中
            preNode.left && list.push(preNode.left);
            preNode.right && list.push(preNode.right);
        }
    }

    return root;
}

const root = {
    val: 1,
    left: {
        val: 2,
        left: null,
        right: null
    },
    right: {
        val: 3,
        left: null,
        right: null
    }
};

console.log(connect(root));
責(zé)任編輯:武曉燕 來源: 前端點線面
相關(guān)推薦

2023-05-04 07:30:28

二叉搜索樹BST

2023-06-19 07:31:34

普通動態(tài)規(guī)劃字符串

2024-02-20 21:34:16

循環(huán)GolangGo

2021-08-27 07:06:10

IOJava抽象

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發(fā)模式

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-09-10 21:42:31

2022-08-30 13:48:16

LinuxMySQL內(nèi)存

2023-10-10 08:00:07

2022-10-28 07:27:17

Netty異步Future

2022-11-12 12:33:38

CSS預(yù)處理器Sass

2022-02-14 07:03:31

網(wǎng)站安全MFA

2022-01-04 12:08:46

設(shè)計接口

2022-06-26 09:40:55

Django框架服務(wù)

2023-04-26 07:30:00

promptUI非結(jié)構(gòu)化

2022-04-06 08:23:57

指針函數(shù)代碼

2023-12-28 09:55:08

隊列數(shù)據(jù)結(jié)構(gòu)存儲

2025-03-27 02:00:00

SPIJava接口
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91性高湖久久久久久久久_久久99 | 午夜精品一区二区三区在线播放 | 九九久久国产 | 久久久亚洲综合 | 情侣酒店偷拍一区二区在线播放 | 一区二区三区四区在线视频 | 欧美极品在线观看 | 久草免费电影 | 欧美精品一区久久 | 蜜桃av鲁一鲁一鲁一鲁 | 国产精品视频不卡 | 国产精品不卡一区二区三区 | 在线一区二区三区 | 国产色婷婷精品综合在线手机播放 | 97色伦网 | 国产精品免费在线 | 在线观看国产h | 一区二区三区国产精品 | 熟女毛片| 在线欧美一区 | 国产精品一区二区久久 | 亚洲福利网 | 欧美多人在线 | 亚洲三区在线观看 | 国产精选一区 | 国产一区二区三区久久久久久久久 | 欧美精品中文字幕久久二区 | 国产精品中文字幕一区二区三区 | 欧美日本高清 | 久久视频精品 | 亚洲国产专区 | 天堂中文av | 看片国产 | avav在线看 | sese视频在线观看 | 欧美4p| 国产精品久久久久久久久久免费 | 国产精品久久久久久久久免费桃花 | 亚洲国产一区在线 | 91精品国产综合久久婷婷香蕉 | 天天操天天摸天天干 |