本文共 1341 字,大约阅读时间需要 4 分钟。
二叉树的基本操作
#include#include typedef char elemtype;typedef struct btnode /*定义结点类型*/ { elemtype data; struct btnode *lchild,*rchild; }bitnode,*bitree;bitree createbitree() { bitree t; char ch; scanf("%c",&ch); if(ch==' ') t=NULL; else { t=(bitnode *) malloc (sizeof(bitnode)); /*申请生成新的结点*/ t->data=ch; t->lchild=createbitree(); /*递归构造左子树*/ t->rchild=createbitree(); /*递归构造右子树*/ } return t; }void preordertraverse(bitree bt) /*先序遍历二叉树的递归算法*/ { if(bt!=NULL) { printf("%c",bt->data); /*访问根结点*/ preordertraverse(bt->lchild); /*先序遍历左子树*/ preordertraverse(bt->rchild); /*先序遍历右子树*/ } }void inordertraverse(bitree bt) /*中序遍历二叉树的递归算法*/ { if(bt!=NULL) { inordertraverse(bt->lchild); /*先序遍历左子树*/ printf("%c",bt->data); /*访问根结点*/ inordertraverse(bt->rchild); /*先序遍历右子树*/ } }void postordertraverse(bitree bt) /*后序遍历二叉树的递归算法*/ { if(bt!=NULL) { postordertraverse(bt->lchild); /*先序遍历左子树*/ postordertraverse(bt->rchild); /*先序遍历右子树*/ printf("%c",bt->data); /*访问根结点*/ } }void main(){ bitree bt1; printf("创建二叉树:\n"); bt1=createbitree(); printf("先序遍历结果:"); preordertraverse(bt1); printf("\n"); printf("中序遍历结果:"); inordertraverse(bt1); printf("\n"); printf("后序遍历结果:"); postordertraverse(bt1); printf("\n");}
运行结果:
转载地址:http://bjyki.baihongyu.com/