把二叉树打印成多行
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>> record;
queue<TreeNode*> p;
if(pRoot==NULL)
return record;
p.push(pRoot);
while(!p.empty())
{
vector<int> data;
int size=p.size();
for(int i=0;i<size;i++)
{
TreeNode *tmp=p.front();
data.push_back(tmp->val);
if(tmp->left)
{
p.push(tmp->left);
}
if(tmp->right)
{
p.push(tmp->right);
}
p.pop();
}
record.push_back(data);
}
return record;
}
};
按之字形顺序打印二叉树
解题思路:对比上题多了一个反转数组
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>> record;
queue<TreeNode*> p;
if(pRoot==NULL)
return record;
p.push(pRoot);
int rev=1;
while(!p.empty())
{
vector<int> data;
int size=p.size();
for(int i=0;i<size;i++)
{
TreeNode *tmp=p.front();//存结点和存值不同步
data.push_back(tmp->val);
if(tmp->left)
{
p.push(tmp->left);
}
if(tmp->right)
{
p.push(tmp->right);
}
p.pop();
}
if(rev==1)
{
record.push_back(data);
}
else if(rev==-1)
{
vector<int> temp;
for(int i=data.size()-1;i>=0;i--)
temp.push_back(data[i]);
record.push_back(temp);
}
rev=-rev;
}
return record;
}
};