二叉树的遍历
#include
using namespace std;
const int N=8;
int x;
queue
struct priority
{
int val;
int left=0;
int right=0;
}youxian[N];
inline void dfs(int i){
printf(“%d “,youxian[i].val);//可以加一个if(!youxian[i].val)
if(youxian[i].left)dfs(youxian[i].left);
if(youxian[i].right)dfs(youxian[i].right);
}//前序,一定要注意0的存在,在深度遍历的时候,要把0去掉
inline void bfs(int i){
q.push(i);
while(!q.empty()){
printf(“%d\n”,x);
x=q.front();
if(youxian[x].left)q.push(youxian[x].left);
if(youxian[x].right)q.push(youxian[x].right);
q.pop();
}
}//层序
int main(){
for(int i=1;i<=N;i++){
youxian[i].val=i;
if (2i<=N)youxian[i].left=2i;
if (2i+1<=N)youxian[i].right=2i+1;
}
dfs(1);
bfs(1);
return 0;
}
