头条面试题:计算目录树的深度

题目:前端在后台管理系统经常会用到目录树,求下面目录tree的高度。

得出depth即为树的高度得出depth即为树

const tree = {
  name: 'root',
  children: [
    { name: '叶子1-1' },
    { name: '叶子1-2' },
    {
      name: '叶子2-1',
      children: [{
        name: '叶子3-1',
        children: [{
          name: '叶子4-1'
        }]
      }]
    }
  ]
}

function getDepth(tree) {
  let depth = 0

  if (tree) {
    let arr = [tree]
    let temp = arr
    while (temp.length) {
      arr = temp
      temp = []
      for (let i = 0; i < arr.length; i++) {
        if (arr[i].children && arr[i].children.length) {
          for (let j = 0; j < arr[i].children.length; j++) {
            temp.push(arr[i].children[j])
          }
        }
      }
      depth++
    }
  }
  return depth
}console.log(getDepth(tree)); //输出4
  1. 定义变量depth为0得出depth即为树的高度得出depth即为树

  2. 定义一个空数组temp,然后遍历tree,如果tree有children,就push到temp里面

  3. 开始while循环,如果temp长度不为0,depth++;如果temp长度为0,停止

如果还有更好的解法,欢迎评论区留言。

思路:

得出depth即为树的高度得出depth即为树

  1. 定义变量depth为0

  2. 定义一个空数组temp,然后遍历tree,如果tree有children,就push到temp里面

  3. 开始while循环,如果temp长度不为0,depth++;如果temp长度为0,停止

  4. 得出depth即为树的高度

    得出depth即为树的高度得出depth即为树的高度得出depth即为树的高度

如果还有更好的解法,欢迎评论区留言。

得出depth即为树的高度得出depth即为树

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值