为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第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 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消