二叉树:折返遍历

阅读: 评论:0

二叉树:折返遍历

二叉树:折返遍历

    给定一棵二叉树,输出对其按层折返遍历的结果,即对于一层从左往右遍历,一层从右往左遍历。如下面的二叉树,其折返遍历结果为[[3], [20, 9], [15, 7]]。


    分析:按照层级遍历的顺序访问,把每层的访问结果存入List中,存储的时候,奇数层的值插入队列末尾,偶数层的插入队列头即可得到想要的结果。

    实际上这种方法并不是真正的折返遍历,只不过对访问的结果做了处理。如果想要真正按照折返的顺序进行访问,在节点插入queue时作处理即可,不过相对麻烦一点。

    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> result = new ArrayList<List<Integer>>();if(root == null)return result;LinkedList<TreeNode> queue = new LinkedList<TreeNode>();queue.offer(root);boolean left2right = true;while(!queue.isEmpty()){LinkedList<Integer> subList = new LinkedList<Integer>();int levelNum = queue.size();for(int i = 0; i < levelNum; i++){TreeNode node = queue.poll();if(left2right)  subList.add(node.val);elsesubList.addFirst(node.val);if(node.left != null) queue.offer(node.left);if(node.right != null)queue.offer(node.right);}left2right = !left2right;result.add(subList);}return result;}

        

本文发布于:2024-01-27 20:07:28,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063572452364.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:遍历   二叉树
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23