LeetCode-103.Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:为什么运营商封80端口 编辑:程序博客网 时间:2024/04/28 01:27

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,#,#,15,7},

    3   / \  9  20    /  \   15   7

return its zigzag level order traversal as:

[  [3],  [20,9],  [15,7]]

这道题其实都与LeetCode 104的解法(http://blog.csdn.net/zmq570235977/article/details/51210982)基本一样

也是102和107的变种(http://blog.csdn.net/zmq570235977/article/details/51325927)

public IList<IList<int>> ZigzagLevelOrder(TreeNode root)        {            IList<IList<int>> res = new List<IList<int>>();            if (root == null)                return res;            int num;            bool isLeft = true;            TreeNode node;            Queue<TreeNode> q = new Queue<TreeNode>();            q.Enqueue(root);            while ((num = q.Count) > 0)            {                IList<int> list = new List<int>();                for (int i = 0; i < num; i++)                {                    node = q.Dequeue();                    if (node.left != null)                        q.Enqueue(node.left);                    if (node.right != null)                        q.Enqueue(node.right);                    if (isLeft)                        list.Add(node.val);                     else                        list.Insert(0,node.val);                }                res.Add(list);                isLeft = !isLeft;            }            return res;        }


0 0