多行列印二叉樹
阿新 • • 發佈:2019-01-23
在此程式碼中,用到了兩個佇列,佇列1用於進行列印、遍歷操作,佇列2用於臨時儲存資料,程式碼如下:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> > v;
if(NULL == pRoot)
return v;
typedef TreeNode Node;
queue<Node*> q1, q2;
int index = 0;
q1.push(pRoot);
while (!q1.empty())
{
v.resize(index+1);
int size = q1.size();
v[index].resize(size);
for(int i = 0; i < size; ++i)
{
Node* temp = q1.front();
q1.pop();
v[index][i] = temp->val;
q2.push(temp);
}
for (int i = 0; i < size; ++i)
{
Node* temp = q2.front();
q2.pop();
if(temp->left)
q1.push(temp->left);
if(temp->right)
q1.push(temp->right);
}
++index;
}
return v;
}