js 如何遍历树的深度(高度)

使用栈遍历,非递归

function getDepth(data = []) {
  let stack = [data]
  let depth = 0
  while (stack.length > 0) {
    let temp = []
    const list = stack.pop()

    if (list.length === 0) {
      continue
    }

    depth++
    // 思路:使用数组遍历的方式,消减树的层级
    list.forEach((item) => {
      if (item && Array.isArray(item.children)) {
        temp = temp.concat(...item.children)
      }
    })

    if (temp.length > 0) {
      stack.push(temp)
    }
  }
  return depth
}

测试代码

const tree = [
  {
    label: '12月',
    children: [
      {
        label: '加分',
      },
      {
        label: '减分',
        children: [
          {
            label: '加分',
          },
          {
            label: '减分',
          },
        ],
      },
    ],
  },
]
console.log(getDepth(tree))

posted @   JoVee  阅读(518)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示