【LeetCode】C# 103、Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:尚学堂java培训骗局 编辑:程序博客网 时间:2024/06/05 23:04

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);    }}
阅读全文
0 0