分行从上到下打印二叉树
题目:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例子:
给定二叉树
输出结果
6
4 8
3 5 7 9
分析:可以使用广度优先遍历的算法
(1)首先在0层获取根节点root,压入队列中。之后将level层作为数组的一维下标,这层的所有节点作为数组的二维元素。
(2)根据根节点的left和right查找1层的所有节点,并将节点元素压入队列,
当队列的第一个元素弹出时,将这个元素的左右节点压入队列。
(3)队列中弹出的元素根据level找到数组的一维下标,level相同的节点值添加到数组中一维数组下标对应的二维数组中。
解:
var levelOrder = function(root) {if(!root){return [];}//根节点root和层数0const queue = [[root, 0]], res = [];while(queue.length){const [node, level] = queue.shift();if(!res[level]){ //判断当前层是否初始化res[level] = [];}res[level].push(node.val); //各层的元素node.left && queue.push([node.left, level + 1]); //下一层的元素node.right && queue.push([node.right, level + 1]); //下一层的元素}return res;};
长按关注我吧
