第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【學(xué)習(xí)打卡】第12天 數(shù)據(jù)結(jié)構(gòu)之“樹(shù)”

標(biāo)簽:
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

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消