树的层级遍历

来源:互联网 发布:阿里云系统盘快满了 编辑:程序博客网 时间:2024/05/16 08:30

#include "stdafx.h"
#include <vector>
#include <string>
#include <iostream>
using namespace std;
typedef vector<int> ints;
#define LevelCount 5
int length=1258;
int Sqit(int Count)
{
 if (Count==0)
 {
  return 0;
 }
 int res=1;
 for (int k=0;k<Count;k++)
 {
  res*=LevelCount;
 }
 return res;
}
int GetStart(int level)
{
 if (level<=0)
 {
  return 0;
 }
 return Sqit(level-1)+GetStart(level-1);
}
ints Get(int num)
{
 ints res;
 int level=num/LevelCount+1;
 int ChildStart=GetStart(level+1);
 int SelfStart=GetStart(level);
 level=((num-SelfStart)*LevelCount+ChildStart);
 for (int k=level;k<level+5;k++)
 {
  res.push_back(k);
 }
 return res;
}
void GetIps(int index,ints &res)
{
 ints km1=Get(index);
 for (int k=0;k<km1.size();k++)
 {
  if (km1[k]<length)
  {
   res.push_back(km1[k]);
  }else
  {
   return;
  }
 }
 int start=0;
 int end=km1.size();
 while(1)
 {
  if (start==end)
  {
   end=res.size();
  }
  ints km=Get(res[start]);
  for (k=0;k<km.size();k++)
  {
   if (km[k]<length)
   {
    res.push_back(km[k]);
   }else
   {
    return;
   }
  }
  start++;
 } 
}

int main(int argc, char* argv[])
{
 int count=0;
 while (count!=-1)
 {
  cin>>length;
  ints res;
  GetIps(0,res);
  for (int i=0;i<res.size();i++)
  {
   cout<<res[i]<<"、";
   if (i%5==0)
   {
    cout<<endl;
   }
  }
  cout<<"==================================================================="<<endl;
  res.clear();
  GetIps(1,res);
  for (i=0;i<res.size();i++)
  {
   cout<<res[i]<<"、";
   if (i%5==0)
   {
    cout<<endl;
   }
  }
  cout<<"==================================================================="<<endl;
  res.clear();
  GetIps(2,res);
  for (i=0;i<res.size();i++)
  {
   cout<<res[i]<<"、";
   if (i%5==0)
   {
    cout<<endl;
   }
  }
  cout<<"==================================================================="<<endl;
  res.clear();
  GetIps(3,res);
  for (i=0;i<res.size();i++)
  {
   cout<<res[i]<<"、";
   if (i%5==0)
   {
    cout<<endl;
   }
  }
  cout<<"==================================================================="<<endl;
  res.clear();
  GetIps(4,res);
  for (i=0;i<res.size();i++)
  {
   cout<<res[i]<<"、";
   if (i%5==0)
   {
    cout<<endl;
   }
  }
  
 }
 
 printf("Hello World!/n");
 return 0;
}

原创粉丝点击