题解 | #把二叉树打印成多行#
把二叉树打印成多行
https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288
class Solution{
private:
int nodeCount = 1;
public:
std::vector<std::vector<int>> Print(TreeNode* pRoot){
std::vector<std::vector<int>> resultVec;
if(pRoot == nullptr) return resultVec;
TreeNode* current;
std::queue<TreeNode*> q;
std::vector<TreeNode*> nodeVec;
std::vector<int> valVec;
q.push(pRoot);
while (!q.empty())
{
while(nodeCount){
current = q.front();
q.pop();
nodeCount--;
valVec.push_back(current->val);
nodeVec.push_back(current);
}
resultVec.push_back(valVec);
for(int i=0; i<nodeVec.size(); i++)
{
if(nodeVec[i]->left != nullptr){
q.push(nodeVec[i]->left);
nodeCount++;
}
if(nodeVec[i]->right != nullptr){
q.push(nodeVec[i]->right);
nodeCount++;
}
}
std::vector<TreeNode*>().swap(nodeVec);
std::vector<int>().swap(valVec);
}
return resultVec;
}
};