博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Binary Tree Zigzag Level Order Traversal 解答
阅读量:5301 次
发布时间:2019-06-14

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

Question

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).

For example:

Given binary tree {3,9,20,#,#,15,7},

3   / \  9  20    /  \   15   7

 

return its zigzag level order traversal as:

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

Solution

Traditional way is to use two queues to implement level order traversal. Here, we just add a flag to indicate whether it's from left to right or from right to left.

1 /** 2  * Definition for a binary tree node. 3  * public class TreeNode { 4  *     int val; 5  *     TreeNode left; 6  *     TreeNode right; 7  *     TreeNode(int x) { val = x; } 8  * } 9  */10 public class Solution {11     public List
> zigzagLevelOrder(TreeNode root) {12 List
> result = new ArrayList
>();13 if (root == null)14 return result;15 // Set a flag to help judge traversal sequence16 // flag = 0, from left to right; flag = 1, from right to left17 int flag = 0;18 List
current = new ArrayList
();19 List
next;20 current.add(root);21 22 while (current.size() > 0) {23 List
oneRecord = new ArrayList
();24 next = new ArrayList
();25 for (TreeNode tmpNode : current) {26 if (tmpNode.left != null)27 next.add(tmpNode.left);28 if (tmpNode.right != null)29 next.add(tmpNode.right);30 if (flag == 0)31 oneRecord.add(tmpNode.val);32 else33 oneRecord.add(0, tmpNode.val);34 }35 result.add(oneRecord);36 current = next;37 flag = 1 - flag;38 }39 return result;40 }41 }

 

转载于:https://www.cnblogs.com/ireneyanglan/p/4834105.html

你可能感兴趣的文章
SDUTOJ3754_黑白棋(纯模拟)
查看>>
Scala入门(1)Linux下Scala(2.12.1)安装
查看>>
如何改善下面的代码 领导说了很耗资源
查看>>
Quartus II 中常见Warning 原因及解决方法
查看>>
php中的isset和empty的用法区别
查看>>
Android ViewPager 动画效果
查看>>
pip和easy_install使用方式
查看>>
博弈论
查看>>
Redis sentinel & cluster 原理分析
查看>>
我的工作习惯小结
查看>>
把word文档中的所有图片导出
查看>>
浏览器的判断;
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
Leetcode 589. N-ary Tree Preorder Traversal
查看>>
机器学习/深度学习/其他开发环境搭建记录
查看>>
xml.exist() 实例演示
查看>>
判断是否为空然后赋值
查看>>
zabbix监控日志文件
查看>>
正则表达式
查看>>
pip install torch on windows, and the 'from torch._C import * ImportError: DLL load failed:' s...
查看>>