继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【学习打卡】第16天 数据结构和算法

康遇
关注TA
已关注
手记 76
粉丝 3
获赞 9

二叉树的层序遍历(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;
};
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP