js层序遍历多叉树

实现

借助队列实现

function Tree(num) {
  this.num = num
  this.subs = []
}
Tree.prototype.add = function (item) {
  this.subs.push(item)
}
function orderTree(t0, cb) {
  let arr = []
  arr.push(t0)
  while (arr.length !== 0) {
    let p = arr.shift()
    cb(p.num)
    if (p.subs.length > 0) {
      p.subs.forEach((s) => {
        arr.push(s)
      })
    }
  }
}
// no-log

测试

// log
let t0 = new Tree(0)
let t1 = new Tree(1)
let t2 = new Tree(2)
let t3 = new Tree(3)
let t4 = new Tree(4)
let t5 = new Tree(5)
let t6 = new Tree(6)
let t7 = new Tree(7)
let t8 = new Tree(8)
let t9 = new Tree(9)
/*
0
|-----|------|
1     2      3
|||   |||    
456   789    
*/
t0.add(t1)
t0.add(t2)
t0.add(t3)
t1.add(t4)
t1.add(t5)
t1.add(t6)
t2.add(t7)
t2.add(t8)
t2.add(t9)

orderTree(t0, (i) => console.log(i))
posted @ 2020-09-27 18:54  oceans-pro  阅读(710)  评论(0编辑  收藏  举报