int InOrderThr ( BiThrTree *head,BiThrTree T ) |
{ /*中序遍历二叉树T,并将其中序线索化,*head 指向头结点。*/ |
if ( ! ( *head = ( BiThrNodeType* ) malloc ( sizeof ( BiThrNodeType ) ) ) ) return 0; |
( *head )->ltag=0; |
( *head )->rtag=1; /*建立头结点*/ |
( *head )->rchild=*head; /*右指针回指*/ |
if ( !T ) ( *head )->lchild =*head; /*若二叉树为空,则左指针回指*/ |
else |
{ |
( *head )->lchild=T; |
pre= head; |
InThreading ( T ); /*中序遍历进行中序线索化*/ |
pre->rchild=*head; |
pre->rtag=1; /*最后一个结点线索化*/ |
( *head )->rchild=pre; |
} |
return 1; |
} |