Leetcode: Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:儒道数据分析地址 编辑:程序博客网 时间:2024/06/08 16:58
URL
https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/description/
描述
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,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its zigzag level order traversal as:
[
[3],
[20,9],
[15,7]
]
解题思路
本题使用深度优先搜索或者广度优先搜索,在不同的层次注意顺序即可,下面给出代码。
DFS
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public List<List<Integer>> zigzagLevelOrder(TreeNode root){ List<List<Integer>> res = new ArrayList<>(); dfs(root,0,res); return res; } public void dfs(TreeNode root,int level,List<List<Integer>> res){ if(root==null) return; if(res.size()<=level){ res.add(new ArrayList<>()); } List<Integer> row = res.get(level); if(level%2==0){ row.add(root.val); }else{ row.add(0,root.val); } dfs(root.left,level+1,res); dfs(root.right,level+1,res); }}
BFS
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<>(); if(root==null) return res; Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); int size = 0; int counter = 0; while(!queue.isEmpty()){ size = queue.size(); LinkedList<Integer> row = new LinkedList<>(); for(int i=0;i<size;i++){ TreeNode tmp = queue.poll(); if(counter%2==0){ row.add(tmp.val); }else{ row.addFirst(tmp.val); } if(tmp.left!=null) queue.add(tmp.left); if(tmp.right!=null) queue.add(tmp.right); } counter++; res.add(row); } return res; }}
阅读全文
0 0
- LeetCode: Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- [Leetcode]Binary Tree Zigzag Level Order Traversal
- [leetcode]Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode-Binary Tree Zigzag Level Order Traversal
- [leetcode] Binary Tree Zigzag Level Order Traversal
- LeetCode - Binary Tree Zigzag Level Order Traversal
- LeetCode:Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- HihoCoder
- 阿里云域名+老薛主机 搭建个人博客网站 小结
- 根据条件控制Grid列能否编辑
- RESTful笔记
- 正则表达式入门
- Leetcode: Binary Tree Zigzag Level Order Traversal
- 多校联合赛第二场Mammum Sequence(贪心)
- Codeforces Round #425 (Div. 2)比赛总结
- svn
- JavaSE异常类
- 函数的调用过程
- HTML5中的Workers多线程处理
- 对象转型
- 访问同一域名,手机端跳转不同链接