将这个树结构颠倒顺序,如下图
思路:
首先 广度遍历 出数组,然后倒序一个个替换
当场做的不是很好,后来面试结束优化了一下
// 树结构
const arr = [{
value: 1,
child: [{
value: 2,
child: [{
value: 4,
},{
value: 5,
}]
},{
value: 3,
child: [{
value: 6,
},{
value: 7,
}]
}]
}]
//广度遍历出各个节点
const list = [...arr];
const items = [];
while(list.length > 0) {
const item = list.shift()
items.push(item) // 保存指针
item.child && list.push(...item.child)
}
// 前后交换,遍历n/2次
for (let i = 0; i < Math.floor(items.length / 2); i++) {
const val = items[i].value;
items[i].value = items[items.length - 1 - i].value;
items[items.length - 1 - i].value = val;
}