题目一.之字形遍历树
https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/
题目简介:之字形遍历树
题解: 用队列的方式,这里用到双端队列 Deque;
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> totlelist = new ArrayList<>();
if(root == null)return totlelist;
Deque<TreeNode> queue = new ArrayDeque<>(); //双端队列Deque
queue.add(root); //把根节点加入队列中
int depth = 0; //树的深度用来判断是否该倒着插
while(!queue.isEmpty()){
int size = queue.size(); //取出长度得到上一层有多长
List<Integer> list = new ArrayList<>();
for(int i=0;i<size;i++){
TreeNode node = queue.poll();
if(depth %2 == 1){
list.add(0,node.val); //头插入
}else{
list.add(node.val);
}
if(node.left != null)queue.add(node.left);
if(node.right != null)queue.add(node.right);
}
totlelist.add(list);
depth++;
}
return totlelist;
}
}