- 首页 > it技术 > >
#include typedef struct BCTreeNode //
{
intValue;
//
struct BCTreeNode*left_child;
//
struct BCTreeNode*right_brother;
//
} *BCTree,BcTree;
int ReverseBCTree(BCTree T){if(T==NULL)
return 0;
if(T->left_child==NULL)//no child,go to brother node
{
ReverseBCTree(T->right_brother);
return 0;
}
BCTree pr,prnext,prprev;
pr=T->left_child;
//head of list
prprev=NULL;
prnext=pr->right_brother;
while(prnext){//reverse all the right_brother list
pr->right_brother=prprev;
//reverse current node to prev list node
//forward one step
prprev=pr;
pr=prnext;
prnext=prnext->right_brother;
}
pr->right_brother=prprev;
T->left_child=pr;
//after reverse T ->left point to head of list ;
ReverseBCTree(T->left_child);
ReverseBCTree(T->right_brother);
return 0;
}int createBCTree(BCTree *T){
int data=https://www.it610.com/article/0;
BCTree t;
printf("input:");
scanf("%d",&data);
if(data=https://www.it610.com/article/=100){
t=0;
return 0;
}
t=(BCTree)malloc(sizeof(struct BCTreeNode));
t->Value=https://www.it610.com/article/data;
t->left_child=NULL;
t->right_brother=NULL;
*T=t;
createBCTree(&(t->left_child));
createBCTree(&(t->right_brother));
return 0;
}intprintBCTree(BCTree T){
if(T==0)
return 0;
printf("output:");
printf(" %d ",T->Value);
printBCTree(T->left_child);
printBCTree(T->right_brother);
return 0;
}int main(int argc, char *argv[]) {
BCTree T=0;
if(createBCTree(&T)){
printf("error");
}
printf("createBCTree over\n");
printBCTree(T);
printf("\nprintBCTree over\n");
ReverseBCTree(T);
printf("\nReverseBCTreeover\n");
printBCTree(T);
printf("\nprintBCTree over\n");
return 0;
}
推荐阅读