问题:给定深度为n的二叉树,奇数层从左到右遍历,偶数层从右到左遍历,即Z字型遍历
原理:使用双端队列保存待遍历的节点,每层之间以null节点结束,遍历到null节点时,方向改变。
代码如下:
/**
class TreeNode{
int val=0;
TreeNode left = null;
TreeNode right = null;
TreeNode(){}
TreeNode(int v){
this.val = v;
}
}
**/
public List<Integer> traverse(TreeNode root){
Deque<TreeNode> deque = new LinkedList<>();
deque.addLast(root);
deque.addLast(null);
List<Integer> list = new ArrayList<>();
int tmp = 1;
while (deque.size()>1){
TreeNode node = tmp==1 ? deque.pollFirst():deque.pollLast();
if(node=