HNUST OJ-2186 层次遍历

原题复刻

思想的火花 :

首先要层序操作是什么意思,题主就使用了STL中的queue来做,关注函数的书写规则,被‘&’和'*'两种操作搞了半天。

#include<iostream>
#include<queue>
using namespace std;
struct node
{
    char data;
    struct node *l,*r;
};
void built(node* &root)
{
    char x;
    if(!(cin >>x))exit(0);
    if(x=='#')root=NULL;
    else
    {
        root=new node;
        root->data=x;
        built(root->l);
        built(root->r);
    }

}
void cengxv(node *root)
{
    if(!root)return;
    queue<node*>q;
    q.push(root);
    while(!q.empty())
    {
        node *now=q.front();
        q.pop();
        cout<<" "<<now->data;
        if(now->l)q.push(now->l);
        if(now->r)q.push(now->r);

    }
}
int main()
{
    node* root;
    built(root);
    cengxv(root);
}
//补个string版
#include<iostream>
#include<queue>
using namespace std;
string a;
struct node
{
    char data;
    struct node *l,*r;
};
void built(node* &root)
{
    static int i=0;
    if(i==a.size())return;
    char x=a[i++];
    if(x=='#')root=NULL;
    else
    {
        root=new node;
        root->data=x;
        built(root->l);
        built(root->r);
    }
}
void cengxv(node *root)
{
    if(!root)return;
    queue<node*>q;
    q.push(root);
    while(!q.empty())
    {
        node *now=q.front();
        q.pop();
        cout<<" "<<now->data;
        if(now->l)q.push(now->l);
        if(now->r)q.push(now->r);

    }
}
int main()
{
    node* root;
    cin>>a;
    built(root);
    cengxv(root);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值