vlambda博客
学习文章列表

分行从上到下打印二叉树


题目:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。


例子:

给定二叉树

分行从上到下打印二叉树


输出结果

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和层数0 const 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;};

分行从上到下打印二叉树 

长按关注我吧