LeetCode Binary Tree Zigzag Leve

2018-04-13  本文已影响0人  codingcyx

第一层从左到右,第二层从右到左,第三层从左到右……

vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
        vector<vector<int>> res;
        if(!root) return res;
        bool leftToRight = true;
        queue<TreeNode*> que;
        que.push(root);
        while(!que.empty()){
            int num = que.size();
            vector<int> tmp(num);
            for(int i = 0; i<num; i++){
                TreeNode* node = que.front();
                que.pop();
                int index = leftToRight ? i : num - i - 1;
                tmp[index] = node -> val;
                if(node -> left) que.push(node -> left);
                if(node -> right) que.push(node -> right);
            }
            leftToRight = !leftToRight;
            res.push_back(tmp);
        }
        return res;
    }

进行正常的队列层序遍历,只需控制
int index = leftToRight ? i : num - i - 1;
tmp[index] = node -> val;
也就是tmp的次序。

上一篇 下一篇

猜你喜欢

热点阅读