1.1 json案例及其要求
let rootDom = {
val: 10,
left: {
val: 5,
left: {
val: 3,
left: {
val: 3
},
right: {
val: 2
}
},
right: {
val: 2,
right: {
val: 1
}
}
},
right: {
val: -3,
right: {
val: 11
}
}
}
1.2 目标代码
let root = [10, 5, -3, 3, 2, null, 11, 3, -2, null, 1]
2 代码实现
// 首先根元素入队
// 当队列不为空的时候
// 求当前队列的长度 s_is
// 依次从队列中取 s_is i个元素进行拓展,然后进入下一次迭代
var levelOrder = function (root) {
const ret = [];
if (!root) {
return ret;
}
const q = [];
q.push(root);
while (q.length !== 0) {
const currentLevelSize = q.length;
for (let i = 1; i <= currentLevelSize; ++i) {
const node = q.shift();
if (node) {
ret.push(node.val);
q.push(node.left);
q.push(node.right);
} else {
ret.push(null);
}
}
}
return remove(ret);
};
function remove(arr){
let flag = true
for(let i =arr.length-1;i>=0;i--){
if(arr[i] != null){
break
}
if(arr[i]==null){
arr.pop()
}
}
return arr
}
console.log(levelOrder(rootDom))
说起来也简单就是个层序遍历