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]
]
题意:Z字型遍历完二叉树。
思路:跟上一题一样,不过根据level奇偶数。
区别:运用这个来判断从前往后加还是由后往前。
if(level%2==0)
res[level].Add(tree.val);
else res[level].Insert(0,tree.val);
/**
* Definition for a binary tree node.
* public class TreeNode {
* public int val;
* public TreeNode left;
* public TreeNode right;
* public TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<List<int>> ZigzagLevelOrder(TreeNode root) {
List<List<int>> res = new List<List<int>>();
zigzag(res,root,0);
return res;
}
public static void zigzag(List<List<int>> res, TreeNode tree,int level){
if(tree == null) return;
if(level>res.Count-1) res.Add(new List<int>());
if(level%2==0)
res[level].Add(tree.val);
else res[level].Insert(0,tree.val);
zigzag(res,tree.left,level+1);
zigzag(res,tree.right,level+1);
}
}