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

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

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

標(biāo)簽:
JavaScript

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

课程内容:

今天学习的内容包括:
8-7 LeetCode:102. 二叉树的层序遍历——通过广度优先遍历,记录同一层级节点并返回。
8-8 LeetCode:94. 二叉树的中序遍历——中序遍历为左根右,把对应遍历记录返回。
8-9 LeetCode:112. 路径总和——通过深度度优先遍历计算每条路径值的和是否满足targetSum。

课程收获:

二叉树的层序遍历

1、基于广度优先遍历实现二叉树的层序遍历
2、本题使用了三种解法

/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var levelOrder = function(root) {
    if(!root) return []
    // -------------------1------------------
    // let res = []
    // let btf = (p,l) => {
    //     if(res[l]){
    //         res[l].push(p.val)
    //     }else{
    //         res.push([p.val])
    //     }
    //     if(p.left) btf(p.left,l+1)
    //     if(p.right) btf(p.right,l+1)
    // }
    // btf(root,0)
    // -------------------1------------------
    // -------------------2------------------
    // let res = []
    // let p = [[root,0]]
    // while(p.length){
    //     let [n,l] = p.shift()
    //     if(res[l]){
    //         res[l].push(n.val)
    //     }else{
    //         res.push([n.val])
    //     }
    //     if(n.left) p.push([n.left,l+1])
    //     if(n.right) p.push([n.right,l+1])
    // }
    // -------------------2------------------
    // -------------------3------------------
    let res = []
    let p = [root]
    while(p.length){
        let len = p.length
        res.push([])
        while(len--) {
            let n = p.shift()
            res[res.length - 1].push(n.val)
            if(n.left) p.push(n.left)
            if(n.right) p.push(n.right)
        }
    }
    // -------------------3------------------
    return res
};

二叉树的中序遍历

1、中序遍历的特点为左中右遍历模式
2、将遍历以数据返回
3、本题使用两种解题方法

/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var inorderTraversal = function(root) {
    // let res = []
    // const rec = (n) => {
    //     if(!n) return
    //     rec(n.left)
    //     res.push(n.val)
    //     rec(n.right)
    // }
    // rec(root)
    let res = []
    let 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
};

路径总和

1、通过深度度优先遍历计算每条路径值的和是否满足targetSum
2、如果满足返回true否则返回false
3、本题采用两种解题方法

/**
 * @param {TreeNode} root
 * @param {number} targetSum
 * @return {boolean}
 */
var hasPathSum = function(root, targetSum) {
  if(!root) return false
  // let stack = [[root, 0]]
  // while(stack.length){
  //   let [p,l] = stack.shift()
  //   if(!p.left && !p.right && l+p.val === targetSum) return true
  //   if(p.left) stack.push([p.left, l+p.val])
  //   if(p.right) stack.push([p.right, l+p.val])
  // }
  // return false
  let res = false
  const dfs = (p,l) => {
    if(!p.left && !p.right && l+p.val === targetSum) res = true
    if(p.left) dfs(p.left, l+p.val)
    if(p.right) dfs(p.right, l+p.val)
  }
  dfs(root, 0)
  return res
};

今天学习的这三道算法题,都是先自己思考然后尝试着写,自己也写出来了一点东西,再结合老师所讲的内容,感觉收获还是很大的,感觉自己还是能够学得会,写得出,能思考,能解决问题的,对自己说一句,加油😀~

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

​​​​
https://img3.sycdn.imooc.com/62fcaf470001fe2b22861226.jpg

https://img1.sycdn.imooc.com//62fcee480001c44919200892.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
提交
取消