【java】103. 二叉树的锯齿形层序遍历----递归集合结合,快熟入手!!!
发布日期:2021-05-07 02:21:43 浏览次数:20 分类:精选文章

本文共 739 字,大约阅读时间需要 2 分钟。

给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

例如:

给定二叉树 [3,9,20,null,null,15,7],

3   / \  9  20    /  \   15   7

返回锯齿形层序遍历如下:

[

[3],
[20,9],
[15,7]
]

public static List
> zigzagLevelOrder(TreeNode root) { List
> list=new ArrayList
>(); LevelOrder(root, list,0);//从第一层开始 return list; } public static void LevelOrder(TreeNode root,List
> list,int level) { if(root==null) { return ; } if(list.size()==level) { //list.size()是第几层减一 list.add(new ArrayList<>());//每层都创建一个ArrayList集合 } if(level%2==0) { //偶数层元素位置顺序往后添加 list.get(level).add(root.val); }else { //奇数层元素位置顺序往前插入 list.get(level).add(0,root.val); } LevelOrder(root.left,list,level+1); LevelOrder(root.right,list,level+1); }
上一篇:【java】387. 字符串中的第一个唯一字符-----走进复杂度为O(n)的算法!!!
下一篇:【java】746. 使用最小花费爬楼梯----预测未来,倒序一步步走!!!

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月10日 16时11分30秒