20170514_ツリー+プリアンブルループ+レイヤループ+スタック+キューの作成
2121 ワード
20170514_ツリー+プリアンブルループ+レイヤループ+スタック+キューの作成
//102. Binary Tree Level Order Traversal
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
#include
#include
#include
#include
using namespace std;
const int SIZE=1000;
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x):val(x),left(NULL),right(NULL) {}
};
//
void CreatBiTree(TreeNode * &root)
{
int ch;
cin>>ch;
getchar();
if(ch == -1)
root=NULL;
else
{
root=new TreeNode(ch);
CreatBiTree(root->left);
CreatBiTree(root->right);
}
}
// ( stack)
void PreOrder(TreeNode *root)
{
TreeNode *s[SIZE];
int top=-1;
while(root != NULL || top != -1)
{
while(root != NULL)
{
cout<val<left;
}
if(top != -1)
{
root=s[top--];
root=root->right;
}
}
}
// ( queue)
void LevelOrder(TreeNode *root)
{
TreeNode *Q[SIZE];
int front=0;
int rear=0;
if(root==NULL)
return;
Q[++rear]=root;
while(front != rear)
{
//auto q=Q[++front];
TreeNode *q=Q[++front];
cout<val<left != NULL)
Q[++rear]=q->left;
if(q->right != NULL)
Q[++rear]=q->right;
}
}
//
class Solution
{
public:
vector> levelOrder(TreeNode *root) //
{
vector> result;
if(root==NULL)
return result;
queue q;
q.push(root);
while(!q.empty())
{
int num=q.size();
vector ivec;
for(int i=0;ival);
q.pop();
if(top->left != NULL)
q.push(top->left);
if(top->right != NULL)
q.push(top->right);
}
result.push_back(ivec);
}
//
for(auto &cow:result)
{
cout<> result;
result=example.levelOrder(root);
//for(auto &row:result)
// for(auto ele:row)
// cout<