二叉树算法描述(二叉树算法)

导读 void Change(BiTreeNode * root) //传入的是二叉树中第一个存放有数据的结点的地址~也就是说如果二叉树建立有头结点的话,传入的地...

void Change(BiTreeNode * root) //传入的是二叉树中第一个存放有数据的结点的地址~也就是说如果二叉树建立有头结点的话,传入的地址应该是头结点的左子树{ BiTreeNode *q,*m; LQueue head; QueueInitiate(&head); QueueAppend(&head, root); while(QueueNotEmpty(head)) { QueueDelete(&head,&q); m=q->leftChild; q->leftChild=q->rightChild; q->rightChild=m; if(q->leftChild!=NULL) QueueAppend(&head, q->leftChild); if(q->rightChild!=NULL) QueueAppend(&head, q->rightChild); } }这个是以前写的,用队列实现转换左右子树的程序。

其中队列定义如下typedef struct qnode{ DataType data; struct qnode *next;} LQNode; typedef struct{ LQNode *front; /*队头指针*/ LQNode *rear; /*队尾指针*/} LQueue;int QueueAppend(LQueue *Q, DataType x)/*把数据元素值x插入链式队列Q的队尾,入队列成功则返回1,否则返回0 */int QueueDelete(LQueue *Q, DataType *d)/*删除链式队列Q的队头数据元素值到d 。

出队列成功则返回1,否则返回0*/当然也可以用递归实现~仅供参考。

免责声明:本文由用户上传,如有侵权请联系删除!