/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
*
* @param root TreeNode类
* @return int整型二维数组
*/
function levelOrder(root) {
// write code here
let ans = [];
// 层序遍历函数
function levelOrder(node, ans) {
if (node == null) {
return ans;
}
// 第一层
ans.push([node.val]);
// 定义遍历的节点队列
let query = [];
if (node.left) {
// 向队列中添加左节点
query.push({ node: node.left, level: 1 });
}
if (node.right) {
// 向队列中添加右节点
query.push({ node: node.right, level: 1 });
}
while (query.length) {
// 取出队列第一个节点
let cur = query[0];
// 弹出第一个节点
query = query.slice(1);
// console.log("query:", query);
// console.log("cur:", cur);
let level = cur.level;
// 判断ans数组当前层是否有数据
if (ans[level]) {
// 有数据,则直接数组追加即可
ans[level].push(cur.node.val);
} else {
// 没有数据,则需要初始化数组
ans[level] = [cur.node.val];
}
if (cur.node.left) {
// 向队列中添加左节点
query.push({ node: cur.node.left, level: level + 1 });
}
if (cur.node.right) {
// 向队列中添加右节点
query.push({ node: cur.node.right, level: level + 1 });
}
}
}
levelOrder(root, ans);
return ans;
}
module.exports = {
levelOrder: levelOrder
};