之字形打印二叉树

Posted 前端你好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了之字形打印二叉树相关的知识,希望对你有一定的参考价值。

题目:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。


例子:

输入二叉树

之字形打印二叉树

输出结果

6

8    4

3    5    7    9


分析:这个题和上个题一样,直接使用广度优先遍历,只是需要在获取的数组中判断层数,将偶数层的二维元素反向排序就可以了。


解:

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]); //下一层的元素 } for(let i = 0;i <= res.length - 1; ++i){ //遍历数组的一维下标 if((i+1) % 2 === 0){ //由于数组是从0开始,所以0+i与2取余可知层数是否为偶 res[i].reverse(); //满足条件层数的二维数组反向排序 } } return res;};

之字形打印二叉树 

长按关注我吧  

以上是关于之字形打印二叉树的主要内容,如果未能解决你的问题,请参考以下文章

按之字形顺序打印二叉树

剑指Offer——按之字形顺序打印二叉树

剑指offer-按之字形打印二叉树

剑指offer(五十三)之按之字形顺序打印二叉树

剑指offer JZ77 按之字形顺序打印二叉树

剑指offer 59.树 按之字形顺序打印二叉树