是差点运气,可我一直在努力!
当前进程:
开始时间:2020.6.27结束时间:undefined
GitHub仓库:https://github.com/Cundefined/JavaScript-or-TypeScript-for-LeetCode
1、题目要求
( 剑指 Offer 32 - III ) 从上到下打印二叉树 III
2、解题思路
方法:广度优先搜索
维护一个队列!!标准的
BFS模板
注意:
1、每一层需要装入临时数组中,再加入结果数组
2、利用res
.length结果数组的长度,可判断当前遍历的层是奇数层还是偶数层
2.1、如果是奇数层,将当前节点都从temp数组尾部添加,即temp
.push(currNode
.val
)
2.2、如果是偶数层,将当前节点都从temp数组头部添加,即temp
.unshift(currNode
.val
)
2.1、JavaScript Solution
var levelOrder = function (root
) {
const res
= [];
if (root
=== null) {
return res
;
}
const queue
= [];
queue
.push(root
);
while (queue
.length
!== 0) {
let temp
= [];
for (let i
= queue
.length
; i
> 0; i
--) {
let currNode
= queue
.shift();
if (((res
.length
+ 1) & 1) !== 0) {
temp
.push(currNode
.val
);
} else {
temp
.unshift(currNode
.val
);
}
currNode
.left
&& queue
.push(currNode
.left
);
currNode
.right
&& queue
.push(currNode
.right
);
}
res
.push([...temp
]);
}
return res
;
};
2.2、TypeScript Solution
function levelOrder(root
: TreeNode
| null): number
[][] {
const res
: number
[][] = new Array<number
[]>();
if (root
=== null) {
return res
;
}
const queue
: Array
<TreeNode
| null> = new Array<TreeNode
| null>();
queue
.push(root
);
while (queue
.length
!== 0) {
let temp
: number
[] = new Array<number
>();
for (let i
: number
= queue
.length
; i
> 0; i
--) {
let currNode
: TreeNode
| null | undefined
= queue
.shift();
if (((res
.length
+ 1) & 1) !== 0) {
currNode
&& temp
.push(currNode
.val
);
} else {
currNode
&& temp
.unshift(currNode
.val
);
}
currNode
&& currNode
.left
&& queue
.push(currNode
.left
);
currNode
&& currNode
.right
&& queue
.push(currNode
.right
);
}
res
.push([...temp
]);
}
return res
;
}