美文网首页
LeetCode Binary Tree Zigzag Leve

LeetCode Binary Tree Zigzag Leve

作者: codingcyx | 来源:发表于2018-04-13 17:02 被阅读0次

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

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的次序。

相关文章

网友评论

      本文标题:LeetCode Binary Tree Zigzag Leve

      本文链接:https://www.haomeiwen.com/subject/ljqhkftx.html