偶然和同学聊到,以前写过先序创建,中序和后序不过更换几句的顺序,不再赘述。
中午大概简单思考一下,层次也很简单,不做解释了。
void LevelOrderCreate()
{
queue<Node *> q;
if(root!=nullptr)
return;
string tmp;
cin>>tmp;
if(tmp=="#") return;
else root = new Node(stoi(tmp));
q.push(root);
while(!q.empty())
{
int len=q.size();
for(int i=0;i<len;i++)
{
Node *scan = q.front();
q.pop();
cin>>tmp;
if(tmp=="#") scan->left=nullptr;
else
{
scan->left = new Node(stoi(tmp));
q.push(scan->left);
}
cin>>tmp;
if(tmp=="#") scan->right=nullptr;
else
{
scan->right = new Node(stoi(tmp));
q.push(scan->right);
}
}
}
}