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

【学习打卡】第12天 数据结构之“树”

标签:
JavaScript

课程名称:JavaScript版数据结构与算法
课程章节:第8章 数据结构之“树”
主讲老师:lewis

课程内容:

今天学习的内容包括:
8-3 二叉树的先中后序遍历——使用递归处理先中后序遍历,这种做法比较简单。
8-4 二叉树的先中后序遍历(非递归版)——使用堆栈实现我们先中后序遍历。

课程收获:

二叉树的先中后序遍历

1、先序遍历:对数据进行根左右遍历
通过递归算法,先处理root,在进行访问root.left,最后访问root.right,从而实现我们想要的先序遍历

const bt = require('./bt');

const preorder = (root) => {
  if(!root) return
  console.log(root.val);
  preorder(root.left)
  preorder(root.right)
}

preorder(bt)

2、中序遍历:对数据进行左根右遍历
通过递归算法,先处理root.left,在进行访问root,最后访问root.right,从而实现我们想要的中序遍历

const bt = require('./bt');

const inorder = (root) => {
    if (!root) { return; }
    inorder(root.left);
    console.log(root.val);
    inorder(root.right);
};

inorder(bt);

3、后序遍历:对数据进行左右根遍历
通过递归算法,先处理root.left,在进行访问root.right,最后访问root,从而实现我们想要的后序遍历

const bt = require('./bt');

const postorder = (root) => {
    if (!root) { return; }
    postorder(root.left);
    postorder(root.right);
    console.log(root.val);
};

postorder(bt);

二叉树的先中后序遍历(非递归版)

1、先序遍历

const bt = require('./bt');

const preorder = (root) => {
    if (!root) { return; }
    const stack = [root];
    while (stack.length) {
        const n = stack.pop();
        console.log(n.val);
        if (n.right) stack.push(n.right);
        if (n.left) stack.push(n.left);
    }
};

preorder(bt)

2、中序遍历

const bt = require('./bt');

const inorder = (root) => {
     if (!root) { return; }
     const stack = [];
     let p = root;
     while (stack.length || p) {
         while (p) {
             stack.push(p);
             p = p.left;
         }
         const n = stack.pop();
		console.log(n.val);
         p = n.right;
     }
};

inorder(bt);

3、后序遍历

const postorder = (root) => {
    if (!root) { return; }
    const outputStack = [];
    const stack = [root];
    while (stack.length) {
        const n = stack.pop();
        outputStack.push(n);
        if (n.left) stack.push(n.left);
        if (n.right) stack.push(n.right);
    }
    while(outputStack.length){
        const n = outputStack.pop();
        console.log(n.val);
    }
};

今天学习的先中后序的算法,递归方法实现还是很容易理解的,针对后面的堆栈实现先中后序听懂了,自己重新写还是没写出来,明天重新看一遍再理解理解吧,对自己说一句,加油😀~

坚持打卡,坚持学习!明天见💪~

​​​​https://img1.sycdn.imooc.com//62fa628a0001e93c19200892.jpg

https://img1.sycdn.imooc.com//62fa667d0001406319200892.jpg

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消