(不是太太太理解)
1、结构体定义
typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; }BiTNode;
2、构造二叉树
int CreateBTree(BiTNode **tp)//? { //构造方法,或者说构造顺序,从左子树开始构造 int x; printf("please inpyut integer:"); scanf("%d",&x); if(x<=0) { *tp = NULL;//指针为空,树节点中的某个指针为空 return 0; } *tp = (BiTNode *)malloc(sizeof(BiTNode)); if(tp == NULL) { return 0; } (*tp)->data = x; CreateBTree(&((*tp)->lchild)); CreateBTree(&((*tp)->rchild)); return 1; }
3、各种递归遍历
void PreOrder(BiTNode *tree) { if(tree == NULL) { return; } printf("%d",tree->data); PreOrder(tree->lchild); PreOrder(tree->rchild); } // void MidOrder(BiTNode *tree) { if(tree == NULL) { return; } MidOrder(tree->lchild); printf("%d",tree->data); MidOrder(tree->rchild); } // void PostOrder(BiTNode *tree) { if(tree == NULL) { return; } PostOrder(tree->lchild); PostOrder(tree->rchild); printf("%d",tree->data); }
4、置空二叉树
//置空二叉树 void BiTreeSetNull(BiTNode *tree) { if(tree == NULL) { return ; } BiTreeSetNull(tree->lchild); BiTreeSetNull(tree->rchild); free(tree); }
5、主函数
int main() { BiTNode *tree = NULL; printf("Create binary tree:\n"); CreateBTree(&tree); printf("Pre Order:\n"); PreOrder(tree); printf("\n"); printf("Mid Order:\n"); MidOrder(tree); printf("\n"); printf("Post Order:\n"); PostOrder(tree); printf("\n"); return 0; }
标签:lchild,return,tree,BiTNode,二叉树,printf,rchild From: https://www.cnblogs.com/gunancheng/p/17459740.html