亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【學習打卡】第16天 數據結構和算法

二叉树的层序遍历(leetcode - 102)

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

思路

  1. 创建一个数组res,用来存放层序遍历的节点
  2. 对二叉树进行广度优先遍历,每一层出队列时,都push到新创建的数组中
  3. 直至队列为空,返回res
var levelOrder = function(root) {
    if(!root) return [];
    let queue = [root];
    const res = [];
    while(queue.length) {
        let len = queue.length;
        res.push([])
        while(len--) {
            let n = queue.shift();
            res[res.length - 1].push(n.val)
            if(n.left) queue.push(n.left);
            if(n.right) queue.push(n.right);
        }
    }
    return res;
};

二叉树的中遍历(leetcode - 94)

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

递归

var inorderTraversal = function(root) {
    const res = [];
    const inorder = (n) => {
        if(!n) return;
        if(n.left) inorder(n.left);
        res.push(n.val);
        if(n.right) inorder(n.right);
    }
    inorder(root);
    return res;
};

栈与迭代

var inorderTraversal = function(root) {
    const res = [];
    if(!root) return res
    const stack = []
    let p = root;
    while(stack.length || p) {
        while(p){
            stack.push(p);
            p = p.left;
        }
        const n = stack.pop();
        res.push(n.val)
        p = n.right
    }
    return res;
};
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
3
獲贊與收藏
9

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消