链式二叉树

来源:互联网 发布:js 获取 鼠标位置 编辑:程序博客网 时间:2024/05/29 04:24
#include <stdio.h>#include <malloc.h>struct BTNODE{int data;struct BTNODE *pLeftChild;struct BTNODE *pRightChild;};struct BTNODE * creatBTnode(void);void prTraverseBT(struct BTNODE *);void miTraverseBT(struct BTNODE *);void laTraverseBT(struct BTNODE *);int main(void){struct BTNODE *p = creatBTnode(); printf("前序遍历结果:\n"); prTraverseBT(p);printf("中序遍历结果:\n"); miTraverseBT(p);printf("后序遍历结果:\n");  laTraverseBT(p);return 0;}struct BTNODE * creatBTnode(void){BTNODE *A = (struct BTNODE *)malloc(sizeof(BTNODE));BTNODE *B = (struct BTNODE *)malloc(sizeof(BTNODE));BTNODE *C = (struct BTNODE *)malloc(sizeof(BTNODE));BTNODE *D = (struct BTNODE *)malloc(sizeof(BTNODE));BTNODE *E = (struct BTNODE *)malloc(sizeof(BTNODE));BTNODE *F = (struct BTNODE *)malloc(sizeof(BTNODE));A->data = 'A';A->pLeftChild = B;A->pRightChild = E;B->data = 'B';B->pLeftChild = C;B->pRightChild = D;C->data = 'C';C->pLeftChild = C->pRightChild = NULL;D->data = 'D';D->pLeftChild = D->pRightChild = NULL;E->data = 'E';E->pLeftChild = NULL;E->pRightChild = F;F->data = 'F';F->pLeftChild = F->pRightChild = NULL;return A;}void prTraverseBT(struct BTNODE *bt){if(bt != NULL){printf("%c\n",bt->data);if(bt->pLeftChild != NULL){prTraverseBT(bt->pLeftChild);//printf("%c\n",bt->pLeftChild->data);   这个加了是多余的。。。。 }if(bt->pRightChild != NULL){prTraverseBT(bt->pRightChild);//printf("%c\n",bt->pRightChild->data);  一直调试错误 }}}void miTraverseBT(struct BTNODE *bt){if(bt != NULL){if(bt->pLeftChild != NULL){miTraverseBT(bt->pLeftChild);}printf("%c\n",bt->data);if(bt->pRightChild != NULL){miTraverseBT(bt->pRightChild);}}}void laTraverseBT(struct BTNODE *bt){if(bt != NULL){if(bt->pLeftChild != NULL){laTraverseBT(bt->pLeftChild);}if(bt->pRightChild != NULL){laTraverseBT(bt->pRightChild);}printf("%c\n",bt->data);}}
0 0
原创粉丝点击