本文主要是介绍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);
}
这篇关于HNUST OJ-2186 层次遍历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!