把二叉树打印成多行
题目描述
| 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 |
题目分析
| (1)首先定义一个二维int型vector,然后前序遍历二叉树,并返回当前节点的深度 (2)将当前节点的值存入对应层的vector数组中 (3)遍历完所有节点后,vector数组即为层次遍历的倒叙结果 (4)将vector的每行元素逆序即得二叉树的层次遍历结果 |
代码实现
class Solution {
public:
vector<vector<int>> Print(TreeNode * pRoot)
{
vector<vector<int>>data;
vector<vector<int>>result;
Print(pRoot, data);
for(int i = 0; i < data.size(); i++)
{
result.push_back(data[data.size()-i-1]);
}
return result;
}
int Print(TreeNode * pRoot, vector<vector<int>>& data)
{
if (pRoot == NULL)
return 0;
int iDepthLeft = Print(pRoot->left, data);
int iDepthRight = Print(pRoot->right, data);
int iDepth = (iDepthLeft > iDepthRight ? iDepthLeft : iDepthRight) + 1;
if (data.size() < iDepth)
{
vector<int>temp;
data.push_back(temp);
}
data[iDepth - 1].push_back(pRoot->val);
return iDepth;
}
};