题目
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
大致意思
给你一个二叉树,得到每一个层级都存在哪些数字
解决方案
- 进行遍历,每次遍历,
level + 1
- 如果当前的数组的长度小于level的话,我们主动
push
一个空数组进行
if (array.length < level) {
array.push([]);
}
- 由于所有的数据都是根据level来存放,所以存放当前level的数组为
array[level - 1]
- 把遍历的当前值
push
进行arr.push(root.val);
- 持续遍历
search(root.left, level + 1);
search(root.right, level + 1);
源代码
var levelOrder = function(root) {
if (!root) return [];
var array = [];
search(root, 1);
function search(root, level) {
if (root) {
if (array.length < level) {
array.push([]);
}
var arr = array[level - 1];
arr.push(root.val);
search(root.left, level + 1);
search(root.right, level + 1);
} else {
return;
}
}
return array;
};