内容简介:
此次作业在建立二叉树时采用先序输入的方法,遍历时则采用先序,中序,后序三种方法。
注:建立二叉树时,以输入的字符为"#"为结束。
此次的二叉树结构为:
1.二叉树的建立:
void createBiTree(PTree *p)//建立二叉树 { char ch; scanf("%c", &ch); getchar();//此时%c读取的是单个字符,所以用getchar来接收一下 if(ch == '#')//结束条件 *p = NULL; else { *p = (PTree)malloc(sizeof(Tree)); (*p) -> ch = ch; printf("请输入%c的左子树\n", ch); createBiTree(&(*p) -> lchild); printf("请输入%c的右子树\n", ch); createBiTree(&(*p) -> rchild); } }
2.二叉树的遍历:
(1)先序遍历
void preOrderTraverse(PTree p)//先序遍历 { if(p == NULL) return ; printf("%c ", p -> ch); preOrderTraverse(p -> lchild); preOrderTraverse(p -> rchild); }
(2)中序遍历
void InOrderTraverse(PTree p)//中序遍历 { if(p == NULL) return; InOrderTraverse(p -> lchild); printf("%c ", p -> ch); InOrderTraverse(p -> rchild); }
(3)后序遍历
void BackOrderTraverse(PTree p)//后续遍历 { if(p == NULL) return ; BackOrderTraverse(p -> lchild); BackOrderTraverse(p -> rchild); printf("%c ", p -> ch); }
3.主函数:
int main() { PTree pt; createBiTree(&pt); printf("先序遍历:"); preOrderTraverse(pt); printf("\n"); printf("中序遍历:"); InOrderTraverse(pt); printf("\n"); printf("后序遍历:"); BackOrderTraverse(pt); printf("\n"); return 0; }
4.运行结果:
5.总结:
此次建立二叉树采用了先序输入的方式,从左到右依次建立子树,并使用递归依次进行先,中,后序遍历,参考了ppt上的相关算法,但使用的方法好像较为重复和麻烦,还要提升自己编程的能力。