leetcode第一刷_Binary Tree Zigzag Level Order Traversal

以出现的频率来看。树的层序遍历一定是考察的重点,除非工作人员想找题水数量。

zigzag,还是有几道题的,层序的这个非常easy,假设是奇数层。reverse下面就可以。无他。我写的时候预计还不知道这个函数。要么怎么这么拙呢。。

class Solution {
public:
    vector<vector<int> > zigzagLevelOrder(TreeNode *root) {
        vector<vector<int> > res;
        if(root == NULL)    return res;
        vector<int> tpres;
        queue<TreeNode*> que;
        TreeNode *pNode;
        int level = 0;
        que.push(root);
        que.push(NULL);
        while(!que.empty()){
            pNode = que.front();
            que.pop();
            if(pNode == NULL){
                level++;
                if(level%2 == 0){
                    for(int i=0, j=tpres.size()-1;i<j;i++, j--){
                        int t = tpres[i];
                        tpres[i] = tpres[j];
                        tpres[j] = t;
                    }
                }
                res.push_back(tpres);
                if(que.empty())
                    break;
                else{
                    tpres.clear();
                    que.push(NULL);
                    continue;
                }
            }
            tpres.push_back(pNode->val);
            if(pNode->left)
                que.push(pNode->left);
            if(pNode->right)
                que.push(pNode->right);
        }
        return res;
    }
};


原文地址:https://www.cnblogs.com/llguanli/p/6823728.html