二叉树这种题,有种百试不爽的感觉。题目比较简单,再简化一下就清晰明了。按层次打印二叉树,先序遍历,按层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); } };