二叉树的遍历
    #include
    using namespace std;
    const int N=8;
    int x;
    queueq;
    struct priority
    {
    int val;
    int left=0;
    int right=0;
    }youxian[N];
    inline void dfs(int i){

    1. 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;
      }