记录 线索二叉树的线索生成
#include<iostream>
#include<string>
using namespace std;
const Max=5;
int Tree[Max];
int TreeJudge[Max][2];
int TreeClue[Max][2];
int index=Max+1;
void Inite()
{
memset(TreeJudge,0,sizeof(TreeJudge));
memset(TreeClue,-1,sizeof(TreeClue));
for(int i=0;i<Max;i++)Tree[i]=i;
}
void CreatClue(int n)
{
if(n<Max)
{
CreatClue(n*2+1);
if(n*2+1>=Max)TreeJudge[n][0]=1;
if(n*2+2>=Max)TreeJudge[n][1]=1;
if(index<Max)
{
if(TreeJudge[index][1]==1)
{
TreeClue[index][1]=n;
}
if(TreeJudge[n][0]==1)
{
TreeClue[n][0]=index;
}
}
index=n;
CreatClue(n*2+2);
}
}
int main()
{
Inite();
CreatClue(0);
for(int i=0;i<Max;i++)
{
cout<<TreeClue[i][0]<<" "<<TreeClue[i][1]<<endl;
}
return 0;
}