从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
返回:
[3,9,20,15,7]
思路:广度优先遍历
- 当节点不存在时,返回 []
- 当节点存在时,定义两个数组,list数组用来保存树的节点,result数组用来保存最后的结果。
每次取出list的第一个节点保存在temp中,将它的value值push进result数组中,然后判断该节点左右子节点是否存在,存在就push进入list的最后面。重复进行,直到list中数据都被取出。
arrayObject.shift():删除并返回数组第一个元素的值。
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var levelOrder = function(root) {
if(!root) return [];
let list = [];
let result = [];
list.push(root);
while(list.length !== 0){
let temp = list.shift();
result.push(temp.val);
if(temp.left !== null){
list.push(temp.left);
}
if(temp.right !== null){
list.push(temp.right);
}
}
return result;
};