二叉树这种题,有种百试不爽的感觉。题目比较简单,再简化一下就清晰明了。按层次打印二叉树,先序遍历,按层push就解决了。
加了一个之字形,增加了一点难度。难度也不大,偶数的层就使用头插法push就可以了。

class Solution {
public:
    vector<vector<int> > res;
    vector<vector<int> > Print(TreeNode* pRoot) {
        PrintLevel(pRoot, 0);
        return res;
    }
    
    void PrintLevel(TreeNode* pRoot,int level){
        if(pRoot == NULL){
            return;
        }
        
        if(res.size() < level + 1){
            res.push_back({});
        }
        if(level % 2 == 0){
            res[level].push_back(pRoot->val);
        }else{
            res[level].insert(res[level].begin(), pRoot->val);
        }

        PrintLevel(pRoot->left,level+1);
        PrintLevel(pRoot->right,level+1);
    }
};