实验类型:验证性实验 班级:20112111 学号:2011211102 姓名:车红岫 实验日期:2013.6
1. 问题描述
二叉树链式存储结构
二叉链表的C语言描述
基本运算的算法——建立二叉链表、先序遍历二叉树、中序遍历二叉树、后 序遍历二叉树、后序遍历求二叉树深度 2. 数据结构设计 typedef struct bitnode
{ char data;
struct bitnode *lchild; struct bitnode *rchild; }bitnode,*bitree;
3. 算法设计
建立二叉链表、先序遍历二叉树、中序遍历二叉树、后 序遍历二叉树、后序遍历求二叉树深度
4.界面设计
5. 运行、测试
(1)运行程序,显示菜单
(2)输入序列
(3)输出结果
6.实验收获及思考
本实验对输入要求较高,运行时要特别注意。
附录:源代码
#include typedef struct bitnode { char data; struct bitnode *lchild; struct bitnode *rchild; }bitnode,*bitree; //初始化二叉树 void createbitree(bitree &t) { char ch; scanf(\"%c\ if(ch == ' ') { t=NULL; return ; } else { t=(bitnode *)malloc(sizeof(bitnode)); t->data=ch; //创建根结点 createbitree(t->lchild); //生成左子树 createbitree(t->rchild); //生成右子树 } } void preordertraverse(bitree &t) { if(t) { printf(\"%c\ preordertraverse(t->lchild); preordertraverse(t->rchild); } } void inordertraverse(bitree &t) { if(t) { inordertraverse(t->lchild); printf(\"%c\ inordertraverse(t->rchild); } } void postordertraverse(bitree &t) { if(t) { postordertraverse(t->lchild); postordertraverse(t->rchild); printf(\"%c\ } } int depth(bitree &t) { int depthval,depthleft,depthright; if(!t) depthval=0; else{ depthleft=depth(t->lchild); depthright=depth(t->rchild); depthval=1+(depthleft>depthright?depthleft:depthright); } return depthval; } int c; int main() { bitree t; printf(\"输入二叉树:\"); createbitree(t); printf(\"先序遍历:\"); preordertraverse(t); printf(\"\\n\"); printf(\"中序遍历:\"); inordertraverse(t); printf(\"\\n\"); printf(\"后序遍历:\"); postordertraverse(t); printf(\"\\n\"); printf(\"\\n\"); printf(\"二叉树的深度为:%d\\n\ printf(\"\\n\"); system(\"pause\"); return 0; } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务