70_leetcode_Binary Tree Zigzag level order traversal

来源:互联网 发布:淘宝代销怎么刷信誉 编辑:程序博客网 时间:2024/06/03 19:01

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]]

    vector<vector<int> > zigzagLevelOrder(TreeNode *root)    {        vector<vector<int > > result;        if(root == NULL)        {            return result;        }                vector<int> temp;        bool flag = true;        deque<TreeNode* > myDeque;        myDeque.push_back(root);        myDeque.push_back(NULL);                while(!myDeque.empty())        {            TreeNode* tempNode = myDeque.front();            myDeque.pop_front();                        if(tempNode)            {                temp.push_back(tempNode->val);                if(tempNode->left)                {                    myDeque.push_back(tempNode->left);                }                if(tempNode->right)                {                    myDeque.push_back(tempNode->right);                }            }            else            {                if(!myDeque.empty())                {                    myDeque.push_back(NULL);                }                                if(flag)                {                    result.push_back(temp);                    flag = false;                }                else                {                    int start = 0;                    int end = (int)temp.size() - 1;                    while(start < end)                    {                        swap(temp[start++], temp[end--]);                    }                    result.push_back(temp);                    flag = true;                }                temp.clear();            }        }                                return result;    }


0 0
原创粉丝点击