数据结构课程设计---二叉树的操作

合集下载

数据结构实验3:二叉树的操作

数据结构实验3:二叉树的操作

TextFile中。

(4) P:打印代码文件(Print)。

将文件CodeFile以紧凑格式显示在终端上,每行50个代码。

同时将此字符形式的编码文件写入文件CodePrin中。

(5) T:打印哈夫曼树(Tree printing)。

将已在内存中的哈夫曼树以直观的方式显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。

3) 实现提示:(1) 文件CodeFile的基类型可以设为字节型。

(2) 用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示退出运行Quit。

请用户键入一个选择功能符。

此功能执行完毕后再显示此菜单,直至某次用户选择了“E”为止。

(3) 在程序的一次执行过程中,第一次执行I、D或C命令之后,哈夫曼树已经在内存了,不必再读入。

每次执行中不一定执行I命令,因为文件hfmTree可能早已建好。

三、实验过程与实验结果实验3-01:以二叉链表为存储结构,实现二叉树的创建、遍历数据结构定义:typedef struct BiTNode{char data;BiTNode *lchild, *rchild;}BiTNode;typedef BiTNode *BiTree;算法设计思路简介:本实验需要实现以下操作:二叉树的初始化、前中后序遍历等基本操作1.利用递归实现前后序遍历,思路简洁,仅需要调整递归体的执行顺序即可实现。

2.利用非递归实现中序遍历,需要利用栈操作,按照中序遍历规则将节点依次入栈后出栈实现。

算法描述:图1 中序遍历(非递归)实现算法的实现和测试结果(参考OJ)实验3-02:编写算法交换二叉树中所有结点的左、右子树数据结构定义:typedef struct BiTNode{char data;BiTNode *lchild, *rchild;}BiTNode;typedef BiTNode *BiTree;算法设计思路简介:本实验需要实现以下操作:二叉树的初始化、前中后序遍历等基本操作1.利用递归实现前后序遍历,思路简洁,仅需要调整递归体的执行顺序即可实现。

数据结构课程设计-二叉树的基本操作Word版

数据结构课程设计-二叉树的基本操作Word版

数据结构课程设计报告设计题目:二叉树的基本操作专业:计算机科技院系:计算机学院姓名:xx xx学号:xxxxxxxx时间:2013年9月22日目录一、设计要求-------------------------------------------------------31.问题描述----------------------------------------------------32.需求分析----------------------------------------------------3二、详细设计--------------------------------------------------------31.概要设计-----------------------------------------------------32.各模块源代码-----------------------------------------------3三、用户手册--------------------------------------------------------9四、总结-------------------------------------------------------------10一、设计要求1.问题描述设计一个与二叉树基本操作相关的演示程序。

2.需求分析(1)创建二叉树。

按照用户需要构建二叉树(2)分别以先序、中序、后序遍历二叉树(3)查找子节点元素二、详细设计(附源代码)1.概要设计//定义二叉树数据结构typedef struct TNode{int num;struct TNode *lchild, *rchild;}TNode;2.各模块源代码(包含main( )函数)#include<stdio.h>#include<stdlib.h>#define MaxLength 100//定义二叉树数据结构typedef struct TNode{int num;struct TNode *lchild, *rchild;}TNode;//声明全局变量rootstatic TNode *root=NULL;//声明插入新结点的函数(根非空)int myInsert_Node(TNode *p, int n);//定义插入新节点的初始函数,拆开写的目的是递归时避免不必要的判断void Insert_Node(int n){if(root==NULL) //如果根结点不存在则创建{root=(TNode *)malloc(sizeof(TNode));root->num=n;root->lchild=NULL;root->rchild=NULL;}else{myInsert_Node(root, n);//非根结点的插入操作}}int myInsert_Node(TNode *p, int n){TNode *temp;if(n<p->num) //比当前结点小,则访问左子树{if(p->lchild==NULL) //左子树为空,则插入该结点{temp=(TNode *)malloc(sizeof(TNode));temp->num=n;temp->lchild=NULL;temp->rchild=NULL;p->lchild=temp;return 0;}else //左子树不为空,则与左子树进行比较{myInsert_Node(p->lchild,n);}}else //右子树同理{if(p->rchild==NULL){temp=(TNode *)malloc(sizeof(TNode));temp->num=n;temp->lchild=NULL;temp->rchild=NULL;p->rchild=temp;return 0;}else{myInsert_Node(p->rchild,n);}}}//前序递归遍历二叉树void Pre_travel(TNode *p){if(p){printf("%d ",p->num);Pre_travel(p->lchild);Pre_travel(p->rchild);}}//中序递归遍历二叉树void Mid_travel(TNode *p){if(p){Mid_travel(p->lchild);printf("%d ",p->num);Mid_travel(p->rchild);}}//后序递归遍历二叉树void Suf_travel(TNode *p){if(p){Suf_travel(p->lchild);Suf_travel(p->rchild);printf("%d ", p->num);}}//中序非递归遍历二叉树/*从根节点开始,沿左子树一直走到没有左孩子的节点为止,并将所经过的节点的地址进栈;当找到没有左孩子的节点时,从栈顶退出该节点并访问它,此时,此节点的左子树已访问完毕;在用上述方法遍历该节点的右子树,如此重复到栈空为止。

数据结构实验报告—二叉树

数据结构实验报告—二叉树

数据结构实验报告—二叉树数据结构实验报告—二叉树引言二叉树是一种常用的数据结构,它由节点和边构成,每个节点最多有两个子节点。

在本次实验中,我们将对二叉树的基本结构和基本操作进行实现和测试,并深入了解它的特性和应用。

实验目的1. 掌握二叉树的基本概念和特性2. 熟练掌握二叉树的基本操作,包括创建、遍历和查找等3. 了解二叉树在实际应用中的使用场景实验内容1. 二叉树的定义和存储结构:我们将首先学习二叉树的定义,并实现二叉树的存储结构,包括节点的定义和节点指针的表示方法。

2. 二叉树的创建和初始化:我们将实现二叉树的创建和初始化操作,以便后续操作和测试使用。

3. 二叉树的遍历:我们将实现二叉树的前序、中序和后序遍历算法,并测试其正确性和效率。

4. 二叉树的查找:我们将实现二叉树的查找操作,包括查找节点和查找最大值、最小值等。

5. 二叉树的应用:我们将探讨二叉树在实际应用中的使用场景,如哈夫曼编码、二叉搜索树等。

二叉树的定义和存储结构二叉树是一种特殊的树形结构,它的每个节点最多有两个子节点。

节点被表示为一个由数据和指向其左右子节点的指针组成的结构。

二叉树可以分为三类:满二叉树、完全二叉树和非完全二叉树。

二叉树可以用链式存储结构或顺序存储结构表示。

- 链式存储结构:采用节点定义和指针表示法,通过将节点起来形成一个树状结构来表示二叉树。

- 顺序存储结构:采用数组存储节点信息,通过计算节点在数组中的位置来进行访问和操作。

二叉树的创建和初始化二叉树的创建和初始化是二叉树操作中的基础部分。

我们可以通过手动输入或读取外部文件中的数据来创建二叉树。

对于链式存储结构,我们需要自定义节点和指针,并通过节点的方式来构建二叉树。

对于顺序存储结构,我们需要定义数组和索引,通过索引计算来定位节点的位置。

一般来说,初始化一个二叉树可以使用以下步骤:1. 创建树根节点,并赋初值。

2. 创建子节点,并到父节点。

3. 重复步骤2,直到创建完整个二叉树。

数据结构实验三——二叉树基本操作及运算实验报告

数据结构实验三——二叉树基本操作及运算实验报告

《数据结构与数据库》实验报告实验题目二叉树的基本操作及运算一、需要分析问题描述:实现二叉树(包括二叉排序树)的建立,并实现先序、中序、后序和按层次遍历,计算叶子结点数、树的深度、树的宽度,求树的非空子孙结点个数、度为2的结点数目、度为2的结点数目,以及二叉树常用运算。

问题分析:二叉树树型结构是一类重要的非线性数据结构,对它的熟练掌握是学习数据结构的基本要求。

由于二叉树的定义本身就是一种递归定义,所以二叉树的一些基本操作也可采用递归调用的方法。

处理本问题,我觉得应该:1、建立二叉树;2、通过递归方法来遍历(先序、中序和后序)二叉树;3、通过队列应用来实现对二叉树的层次遍历;4、借用递归方法对二叉树进行一些基本操作,如:求叶子数、树的深度宽度等;5、运用广义表对二叉树进行广义表形式的打印。

算法规定:输入形式:为了方便操作,规定二叉树的元素类型都为字符型,允许各种字符类型的输入,没有元素的结点以空格输入表示,并且本实验是以先序顺序输入的。

输出形式:通过先序、中序和后序遍历的方法对树的各字符型元素进行遍历打印,再以广义表形式进行打印。

对二叉树的一些运算结果以整型输出。

程序功能:实现对二叉树的先序、中序和后序遍历,层次遍历。

计算叶子结点数、树的深度、树的宽度,求树的非空子孙结点个数、度为2的结点数目、度为2的结点数目。

对二叉树的某个元素进行查找,对二叉树的某个结点进行删除。

测试数据:输入一:ABC□□DE□G□□F□□□(以□表示空格),查找5,删除E预测结果:先序遍历ABCDEGF中序遍历CBEGDFA后序遍历CGEFDBA层次遍历ABCDEFG广义表打印A(B(C,D(E(,G),F)))叶子数3 深度5 宽度2 非空子孙数6 度为2的数目2 度为1的数目2查找5,成功,查找的元素为E删除E后,以广义表形式打印A(B(C,D(,F)))输入二:ABD□□EH□□□CF□G□□□(以□表示空格),查找10,删除B预测结果:先序遍历ABDEHCFG中序遍历DBHEAGFC后序遍历DHEBGFCA层次遍历ABCDEFHG广义表打印A(B(D,E(H)),C(F(,G)))叶子数3 深度4 宽度3 非空子孙数7 度为2的数目2 度为1的数目3查找10,失败。

二叉树的操作

二叉树的操作

实验三二叉树的操作一、实验目的1、进一步掌握指针变量、动态变量的含义;2、掌握二叉树的结构特征,以及各种存储结构的特点及适用范围;3、掌握用指针类型描述、访问和处理二叉树的运算。

二、实验要求1、认真阅读和掌握本实验的程序。

2、上机运行本程序。

3、保存和打印出程序的运行结果,并结合程序进行分析。

4、按照你二叉树的操作需要,重新改写主程序并运行,打印出文件清单和运行结果三、实验题目已知以二叉链表作存储结构,试编写按层次顺序遍历二叉树的算法。

(你也可以建立二叉树后。

再做二叉树的穿线、求二叉树的高度、求叶子结点数、求任意结点的前驱和后继等)算法思想:本算法要采用一个队列q,先将二叉树根结点入队列,然后退队列,输出该结点;若它有左子树,便将左子树根结点入队列;若它有右子树,便将右子树根结点入队列。

因为队列的特点是先进先出,从而达到按层次顺序遍历二叉树的目的。

算法描述:本实验中的算法描述包括所用的数据结构描述、在二叉排序树中插入结点、建立二叉树、中序遍历打印二叉排序树;初始化队列、判断队列是否为空、出队操作。

四、代码清单1、binarytree.h文件代码清单#include <stdio.h>#include <malloc.h>#define null 0typedef struct tree{ /*声明树的结构*/struct tree *left; /*存放左子树的指针*/struct tree *right; /*存放又子树的指针*/int data; /*存放节点的内容*/} treenode, * b_tree; /*声明二叉树的链表*//* 在二叉排序树中插入结点*/b_tree insert_node(b_tree root,int node){b_tree newnode; /*声明新结点指针*/b_tree currentnode; /*声明当前结点指针*/b_tree parentnode; /*声明父结点指针*/newnode=(b_tree)malloc(sizeof(treenode));/*建立新结点的内存空间*/newnode->data =node; /*结点的内容*/newnode->left =null; /*设置右指针初值*/newnode->right =null; /*设置左指针初值*/if(root==null)return newnode;else{currentnode=root;while(currentnode!=null){/*寻找要插入的位置*/parentnode =currentnode;if(currentnode->data >node )currentnode=currentnode->left ;elsecurrentnode=currentnode->right ;}if(parentnode->data >node)parentnode->left =newnode;elseparentnode->right =newnode;return root;}}/*建立二叉树 */b_tree create_btree(int *data,int len){b_tree root=null; /*根结点*/int i;for(i=0;i<len;i++)/*建立二叉排序树*/root=insert_node(root,data[i]);return root;}/* 中序遍历打印二叉排序树*/void inorder_btree(b_tree root){b_tree p=root;if(p!=null){inorder_btree(p->left );printf("%3d",p->data );inorder_btree(p->right );}}2、queue.h代码清单#include "binarytree.h"#define null 0typedef b_tree ElemType ;/*typedef char ElemType ; *//*定义队列结点类型*/typedef struct QueueNode{ElemType data;struct QueueNode *next;} QueueNode;/*定义队列*/typedef struct linkQueue{QueueNode * front;QueueNode * rear;}linkQueue;/*初始化队列*/void initQueue(linkQueue * q){q->front=q->rear =null;}/*判断队列是否为空*/int QueueEmpty(linkQueue * Q){return (Q->front==null)&&(Q->rear==null);/*实际上只须判断队头指针是否为空即可*/}/*入队操作*/void EnQueue(linkQueue *Q,ElemType x){ /*将元素x插入链队列尾部*/QueueNode *p=(QueueNode *)malloc(sizeof(QueueNode)); /*申请新结点*/ p->data=x; p->next=null;if(QueueEmpty(Q)) /*将x插入空队列*/Q->front=Q->rear=p;else{ /*x插入非空队列的尾*/Q->rear->next=p; /*p链到原队尾结点后*/Q->rear=p; /*队尾指针指向新的尾*/}}/*出队操作*/ElemType DeQueue (linkQueue *Q){ElemType x;QueueNode *p;if(QueueEmpty(Q)){printf("Queue underflow");/*下溢*/exit(1) ;}p=Q->front; /*指向对头结点*/x=p->data; /*保存对头结点的数据*/Q->front=p->next; /*将对头结点从链上摘下*/if(Q->rear==p)/*原队中只有一个结点,删去后队列变空,此时队头指针已为空*/ Q->rear=NULL;free(p); /*释放被删队头结点*/return x; /*返回原队头数据*/}3、main.c程序清单#include "queue.h"void visit(b_tree p){if(p->data!=1)printf("%3d",p->data);elseprintf("%3c",p->data);}void breadthFirst2(b_tree root){b_tree p,tmp;linkQueue * q;tmp=(treenode *)malloc(sizeof(treenode));q=(linkQueue *)malloc(sizeof(linkQueue));tmp->data=1;initQueue(q);p=root;if(p!=null){EnQueue(q,p);while(!QueueEmpty(q)){p=DeQueue(q);visit(p);if(p->data!=1){if(p->left!=null)EnQueue(q,p->left);elseEnQueue(q,tmp);if(p->right!=null)EnQueue(q,p->right);elseEnQueue(q,tmp);}}}}void breadthFirst(b_tree root){b_tree p;linkQueue * q;q=(linkQueue *)malloc(sizeof(linkQueue));initQueue(q);p=root;if(p!=null){EnQueue(q,p);while(!QueueEmpty(q)){p=DeQueue(q);visit(p);if(p->left!=null)EnQueue(q,p->left);if(p->right!=null)EnQueue(q,p->right);}}}void main(){int nodelist[10]={8,5,3,34,23,73,15,34,56,32}; b_tree root;root=create_btree(nodelist,10);printf("中序遍历开始:\n");inorder_btree(root);printf("\n中序遍历结束\n\n");printf("层次遍历开始:\n");breadthFirst(root);printf("\n");breadthFirst2(root);printf("\n层次遍历结束:\n");}。

二叉排序树课程设计

二叉排序树课程设计

二叉排序树课程设计一、课程目标知识目标:1. 学生能够理解二叉排序树的基本概念和性质,掌握其结构特点和应用场景。

2. 学生能够掌握二叉排序树的插入、删除和查找操作,并了解其时间复杂度。

3. 学生能够理解二叉排序树与其他排序算法的关系,了解其在排序中的应用。

技能目标:1. 学生能够运用所学知识,独立构建二叉排序树,并实现插入、删除和查找功能。

2. 学生能够分析二叉排序树的性能,对其进行优化,提高排序效率。

3. 学生能够运用二叉排序树解决实际问题,如数据排序、查找等。

情感态度价值观目标:1. 学生通过学习二叉排序树,培养对数据结构和算法的兴趣,提高解决问题的能力。

2. 学生在学习过程中,学会合作、交流,培养团队精神和共享意识。

3. 学生能够认识到二叉排序树在实际应用中的价值,激发对计算机科学的热爱。

本课程针对高中年级学生,课程性质为理论与实践相结合。

在教学过程中,注重启发式教学,引导学生主动探究、实践。

根据学生特点和教学要求,课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果。

课程目标的分解为具体的学习成果,为后续的教学设计和评估提供依据。

二、教学内容1. 引入二叉排序树的概念,讲解其定义、性质和基本操作。

- 理解二叉树的基础知识,回顾二叉树的遍历方法。

- 介绍二叉排序树的定义,阐述其特点及应用场景。

- 分析二叉排序树的性质,如二叉排序树的中序遍历结果为有序序列。

2. 探讨二叉排序树的构建、插入、删除和查找操作。

- 讲解二叉排序树的构建方法,学会从无序数据建立二叉排序树。

- 分析插入、删除和查找操作的步骤,理解它们的时间复杂度。

- 举例说明如何利用二叉排序树实现数据排序和查找。

3. 分析二叉排序树的性能及优化方法。

- 探讨二叉排序树的高度、平衡因子等性能指标。

- 介绍常见的优化方法,如平衡二叉树(AVL树)和红黑树。

4. 实践环节:二叉排序树的应用。

- 设计实践题目,让学生动手实现二叉排序树的基本操作。

c语言数据结构二叉树的基本操作

c语言数据结构二叉树的基本操作

c语言数据结构二叉树的基本操作在 C 语言中,二叉树是一种常见的数据结构,它由节点组成,每个节点最多有两个子节点。

以下是二叉树的一些基本操作的示例:1. 创建二叉树:```c#include <stdio.h>#include <stdlib.h>// 定义二叉树节点结构体struct TreeNode {int data;struct TreeNode* left;struct TreeNode* right;};// 创建二叉树struct TreeNode* createTree(int data) {struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));if (newNode == NULL) {printf("内存分配失败\n");exit(1);}newNode->data = data;newNode->left = NULL;newNode->right = NULL;return newNode;}```在上述示例中,我们定义了一个二叉树节点结构体 `TreeNode`,它包含一个整数类型的数据成员 `data`,以及两个指向左右子节点的指针成员 `left` 和 `right`。

然后,我们使用 `malloc` 函数分配一个 `TreeNode` 结构体的内存空间,并将其赋值给 `newNode` 变量。

如果内存分配失败,我们输出错误信息并终止程序。

最后,我们初始化 `newNode` 的数据成员,并将左右子节点设置为 `NULL`,表示它们还没有被赋值。

2. 插入节点:```c// 在二叉树中插入节点void insertNode(struct TreeNode* root, int data) {if (root == NULL) {root = createTree(data);return;}if (data < root->data) {insertNode(root->left, data);} else if (data > root->data) {insertNode(root->right, data);}}```在上述示例中,我们定义了一个函数 `insertNode`,用于在二叉树中插入节点。

二叉排序树课程设计

二叉排序树课程设计

二叉排序树课程设计一、课程目标知识目标:1. 理解二叉排序树的概念和特点;2. 掌握二叉排序树的插入、删除和查找操作;3. 能够分析二叉排序树的时间复杂度;4. 了解二叉排序树在实际应用中的优势。

技能目标:1. 能够手动构建二叉排序树并进行基本操作;2. 能够运用编程语言实现二叉排序树的基本功能;3. 能够分析并解决二叉排序树相关的问题;4. 能够运用二叉排序树解决实际排序和查找问题。

情感态度价值观目标:1. 培养学生对数据结构和算法的兴趣,激发学习热情;2. 培养学生的逻辑思维能力和问题解决能力;3. 培养学生的团队协作意识,学会与他人共同分析、解决问题;4. 培养学生严谨的科学态度,注重算法的正确性和效率。

课程性质:本课程为计算机科学领域的数据结构与算法课程,旨在让学生掌握二叉排序树的基本概念和操作,提高学生的编程能力和逻辑思维能力。

学生特点:学生具备基本的计算机知识和编程基础,对数据结构有一定了解,但对二叉排序树的认识可能较浅。

教学要求:结合学生特点,采用讲解、实践和讨论相结合的教学方法,使学生在理解二叉排序树理论知识的基础上,能够动手实践并解决实际问题。

在教学过程中,注重培养学生的自主学习能力和团队合作精神,提高学生的综合素质。

通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程打下坚实基础。

二、教学内容1. 引入二叉排序树的概念,阐述其定义、性质和应用场景;- 教材章节:第三章第一节“二叉排序树的定义和性质”2. 讲解二叉排序树的插入、删除、查找操作及其实现方法;- 教材章节:第三章第二节“二叉排序树的操作”3. 分析二叉排序树的性能特点,包括时间复杂度和空间复杂度;- 教材章节:第三章第三节“二叉排序树的性能分析”4. 介绍二叉排序树在实际应用中的优势,如排序、查找等;- 教材章节:第三章第四节“二叉排序树的应用”5. 结合实例,让学生动手实践二叉排序树的构建和操作;- 教材章节:第三章实例分析与编程练习6. 总结二叉排序树的特点和适用场景,与其他排序方法进行对比;- 教材章节:第三章总结与拓展教学进度安排:1. 第1课时:引入二叉排序树的概念、性质和应用场景;2. 第2课时:讲解二叉排序树的插入、删除、查找操作;3. 第3课时:分析二叉排序树的性能特点;4. 第4课时:介绍二叉排序树在实际应用中的优势;5. 第5课时:结合实例,学生动手实践二叉排序树的构建和操作;6. 第6课时:总结二叉排序树,与其他排序方法进行对比。

数据结构课程设计(二叉树的基本操作)资料

数据结构课程设计(二叉树的基本操作)资料

重庆大学城市科技学院课程设计报告二叉树的基本操作学院:电气信息学院专业:软件工程年级: 2011 姓名:班级: 01 学号: 20110286 成绩:完成时间: 2013年1月2日指导教师:目录一、需求分析 (3)二、概要设计 (3)三、详细设计 (4)四、调试结果 (11)五、课程设计总结 (11)一、需求分析二叉树形象地说即树中每个节点最多只有两个分支,它是一种重要的数据类型。

可以运用于建立家谱,公司所有的员工的职位图,以及各种事物的分类和各种机构的职位图表等。

二叉树是通过建立一个链式存储结构,达到能够实现前序遍历,中序遍历,后序遍历。

以及能够从输入的数据中得知二叉树的叶子结点的个数,二叉树的深度。

在此,二叉树的每一个结点中必须包括:值域,左指针域,右指针域。

演示程序以用户与计算机对话的方式进行,即在计算机终端上显示提示信息后,由用户在键盘上输入相应动作的序号和相应的输入数据。

1.1课程设计任务及要求(1)按先序次序输入二叉树中结点的值,构造二叉链表表示的二叉树t;(2)对二叉树t作先序、中序、后序遍历的递归算法,输出结果;(3)计算二叉树t的深度,输出结果;(4)计算二叉树t的叶子结点个数1.2课程设计思想本次课程设计中,用到的主要知识就是递归思想,着重体会递归的思想。

建立二叉树采用先序次序插入的方式。

对二叉树进行遍历时采用递归函数的方式。

求二叉树的深度及叶子结点个数均采用递归方式。

二、概要设计2.1对程序中定义的核心数据结构及对其说明:typedef struct BiTNode{char data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;在开头定义了二叉树的链式存储结构,此处采用了每个结点中设置三个域,即值域,左指针域和右指针域。

2.2 程序模块及其功能:本程序分为:7大模块。

二叉树的建立链式存储结构、前序遍历、中序遍历、后序遍历、求叶子结点的个数计算、中序遍历、后序遍历、深度、主函数。

排序二叉树的应用-数据结构课程设计报告

排序二叉树的应用-数据结构课程设计报告

数据结构课程设计报告题目: 排序二叉树的应用一、设计任务1、程序在运行时,可以执行有关排序二叉树的操作:如插入一个元素、删除一个元素、查找一个元素、打印一个元素等。

2、用递归算法遍历二叉树。

二、设计分析1 、二叉树是n〔n>=0〕个结点的有限集合,它或为空树〔n=0〕,或由一个根结点和两棵分别称为根的左子树和右子树的互不相交的二叉树组成。

二叉树是一个递归定义。

一棵深度为k且有2k-1个结点的二叉树称为满二叉树。

对满二叉树的结点进行连续编号,约定编号从根结点起,自上而下,自左而右。

2 、二叉树的存储结构1〕顺序存储结构:二叉树可以采用顺序存贮结构,即用一维数组来存放二叉树的数据元素。

它是按照满二叉树的结点层次编号层次来依次存放二叉树中的数据元素。

2〕链式存储结构:设计不同的结点结构可构成不同形式的链式存储在本程序中,采用顺序存储结构,对二叉树进行插人、删除、查找、遍历等操作。

3 、二叉树的建立已知一棵二叉树,共有n个结点,建立的方法如下:1)照完全二叉树的编号方法,对该二叉树进行编号。

2)次输入一个结点的值x和该结点的编号k,动态申请一块空间来存放该结点,空间的地址为p。

3)把p值赋给adr[k]中。

4)如果k=1,转到5;否则,把p的值填入其父结点的指针域中。

p 的父结点地址为adr[k/2],假设k为偶数,则做adr[k/2]->lc=p;假设为奇数,则做adr[k/2]->rc=p。

5)重复2~4,直到全部顶点数据输入完为止。

4 、遍历二叉树,即如何按某条搜索路径寻访树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。

一棵非空二叉树是由根结点〔D〕、左子树〔L〕和右子树〔R〕三个基本部分组成。

要遍历这三个基本部分,可以有六种可能的顺序。

假设限定先左后右,则只有三种情况:先序遍历〔DLR〕、中序遍历〔LDR〕、后序遍历〔LRD〕。

在本程序中,遍历二叉树函数的核心是以一个简单的case语句来实现5 、二叉树的插入操作:这个操作首先生成一个新的结点结构,把数据存入新结点,然后搜索二叉树寻找插入结点的位置,再把新结点连接到二叉树。

数据结构课程设计二叉树

数据结构课程设计二叉树

目录一、问题描述 (1)二、测试数据 (1)三、算法思想 (1)四、模块划分 (1)五、数据结构 (1)六、源程序 (2)七、测试情况 (8)八、设计体会 (9)参考文献 (9)一、问题描述(1)用二叉链表存储表示法,定义一颗排序二叉树;(2)输入树的各个结点,用先序遍历的的顺序建立二叉链表。

按先序输入二叉树中结点的值,创建二叉链表表示的二叉树T;(3)对建立的排序二叉树进行层次、先序、中序和后序遍历并统计该二叉树中叶子结点的数目;(4)用菜单实现各部分的操作;二、测试数据建立二叉树:ABC##DE#G##F###三、算法思想在本课程设计中涉及的算法大部分用了递归的算法思想。

递归即是一个过程和函数在其自定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解四、模块划分(1)void PreOrderTraverse(BiTree T)、void PostOrderTraverse(BiTree T)、void InOrderTraverse(BiTree T),这几个函数分别为前序、后序、中序遍历二叉树,都用了递归的算法思想,对二叉树进行不同次序的遍历。

前、中、后序分别按根->左->右、左->根->右、左->右->根的顺序遍历结点;(2)void CreateBiTree(BiTree &T),此函数功能是通过先序遍历的的顺序建立二叉树。

按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树T;(3)void lev_traverse(BiTree T) ,此函数功能为按层遍历二叉树。

其中借鉴了循环队列进队、出队的算法思想,通过不断地对二叉树节点进行进队出队,从上到下从左到右遍历了二叉树;(4)int leaf(BiTree T),此函数用递归方法求二叉树的叶子数.当某节点无左子树和右子树时,二叉树的叶子数就等于没有子树的节点个数。

数据结构设计——二叉树实现

数据结构设计——二叉树实现

数据结构设计——⼆叉树实现⼆叉树操作设计和实现实验⽬的:掌握⼆叉树的定义、性质及存储⽅式,各种遍历算法。

实验要求:采⽤⼆叉树链表作为存储结构,完成⼆叉树的建⽴,先序、中序和后序以及按层次遍历的操作,求所有叶⼦及结点总数的操作。

1 #include <stdio.h>2 #include <stdlib.h>3 typedef char DataType;4 typedef struct node{5 DataType data;6struct node *lchild,*rchild;7 }Bnode, *BTree;8int count;9void CreateBTree(BTree *T);10void PreorderN(BTree T);11void MiddleN(BTree T);12void LatterN(BTree T);1314#define StackSize 100 /*假定预分配的栈空间最多为10*/15 typedef BTree SDataType; /*栈的元素类型设为整型*/16#define Error printf1718 typedef struct{19 SDataType data[StackSize];20int top;21 }SeqStack;2223 SeqStack * InitStack(void) /*初始栈*/24 {25 SeqStack *S = (SeqStack *)malloc(sizeof(SeqStack) * StackSize);26 S->top=-1;27 }2829int StackEmpty(SeqStack *S) /*判栈空*/30 {31return S->top==-1;32 }3334int StackFull(SeqStack *S) /*判栈满*/35 {36return S->top==StackSize-1;37 }3839void Push(SeqStack *S, SDataType x) /*进栈*/40 {41if(StackFull(S))42 Error("STACK FULL!\n"); /*上溢退出*/43else44 S->data[++S->top]=x; /*栈顶指针加1后将x进栈*/45 }4647 SDataType Pop(SeqStack *S) /*出栈*/48 {49if (StackEmpty(S))50 Error("Stack underflow"); /*下溢退出*/51else52return S->data[S->top--]; /*栈顶指针返回后将栈顶指针减1*/53 }5455 SDataType StackTop(SeqStack *S) /*取栈顶元素*/56 {57if (StackEmpty(S))58 Error("STACK EMPTY!\n");59return S->data[S->top];60 }6162 main()63 {64 BTree T;65char ch1,ch2;66 printf("\nPLEASE SELECT:\n");67 ch1='y';68while(ch1=='y' || ch1=='Y')69 {70 printf("\nA------------------------CREATE BITREE");71 printf("\nB-------------------------DLR(NO DI IGU)");72 printf("\nC----------------------Middle(NO DI IGU)");73 printf("\nD----------------------Latter(NO DI IGU)");74 printf("\nE-------------------------EXIT\n");75 scanf("\n%c",&ch2);76switch(ch2)77 {78case'A':79case'a':printf("INPUT NODE:\n");80 CreateBTree(&T);81 printf("CREATE SUCC\n");break;82case'B':83case'b':printf("BIAN LI JIE GUO\n");84 PreorderN(T);break;85case'C':86case'c':printf("Middle Bian Li Jie Guo\n");87 MiddleN(T);break;88case'D':89case'd':printf("Latter Bian Li Jie Guo\n");90 LatterN(T);break;91case'E':92case'e':ch1='n';break;93default:ch1='n';94 }95 }96 }97void CreateBTree(BTree *T)98 {99char ch;100 scanf("\n%c",&ch);101if (ch=='0')102 *T=NULL;103else104 {105 *T=(Bnode*)malloc(sizeof(Bnode));106 (*T)->data=ch;107 CreateBTree(&(*T)->lchild);108 CreateBTree(&(*T)->rchild);109 }110 }111void PreorderN(BTree T)112 {/*先序遍历⼆叉树T的⾮递归算法*/113 SeqStack *S;114 BTree p;115 p = T;116 S = InitStack();117while(!StackEmpty(S) || p != NULL)118 {119if(p)120 {121 printf("%3c",p->data); /*访问⼊栈结点的数据域*/ 122 Push(S,p); /*向左⾛到尽头*/123 p = p->lchild;124 }125else126 {127 p = Pop(S);128 p = p->rchild;129 }130 }131 }/*PreorderN */132133void MiddleN(BTree T)134 {135 SeqStack *S;136 BTree p;137 p = T;138 S = InitStack();139while(!StackEmpty(S) || p != NULL)140 {141if(p)142 {143/*向左⾛到尽头*/144 Push(S,p);145 p = p->lchild;146 }147else148 {149 p = Pop(S);150 printf("%3c",p->data);/*访问⼊栈结点的数据域*/ 151 p = p->rchild;152 }153 }154 }155156void LatterN(BTree T)157 {158 SeqStack *S1,*S2;159 BTree p;160 p = T;161 S1 = InitStack();162 S2 = InitStack();163while(!StackEmpty(S1) || p != NULL)164 {165if(p)166 {167/*向左⾛到尽头*/168 Push(S1,p);169 Push(S2,p);170 p = p->rchild;171 }172else173 {174 p = Pop(S1);175 p = p->lchild;176 }177 }178while(!StackEmpty(S2))179 {180 p = Pop(S2);181 printf("%3c",p->data);/*访问⼊栈结点的数据域*/ 182 }183 }。

数据结构课程设计-二叉树的基本操作

数据结构课程设计-二叉树的基本操作

二叉树的基本操作摘要:本次课程设计通过对二叉树的一系列操作主要练习了二叉树的建立、四种遍历方式:先序遍历、中序遍历、后序遍历和层序遍历以及节点数和深度的统计等算法。

增加了对二叉树这一数据结构的理解,掌握了使用c语言对二叉树进行一些基本的操作。

关键字:递归、二叉树、层序遍历、子树交换一、程序简介本程序名为“二叉树基本操作的实现”,其主要为练习二叉树的基本操作而开发,其中包含了建立、遍历、统计叶子结点和深度等一系列操作。

其中定义二叉链表来表示二叉树,用一个字符类型的数据来表示每一个节点中存储的数据。

由于没有进行图形界面的设计,用户可以通过程序中的遍历二叉树一功能来查看操作的二叉树。

二、功能模块2.1功能模块图2.2功能模块详解2.2.1建立二叉树输入要建立的二叉树的扩展二叉树的先序遍历序列,来建立二叉树,建立成功会给出提示。

2.2.2遍历二叉树执行操作之后会有四个选项可供选择:先序遍历、中序遍历、后序遍历、层序遍历。

输入对应的序号即可调动相关函数输出相应的遍历序列。

2.2.3统计叶子节点树执行之后输出叶子结点的个数。

2.2.4求二叉树深度执行之后输出二叉树的深度。

2.2.5子树交换交换成功则会给出提示,用户可通过遍历二叉树来观察子树交换之后的二叉树。

三、数据结构和算法设计3.1二叉链表的设计1.typedef struct BiNode {2.char data;3.struct BiNode* lchild; //左孩子4.struct BiNode* rchild; //右孩子5.}BiTree;用一个字符型保存节点数据,分别定义两个struct BiNode类型的指针来指向左孩子和右孩子。

在BiTree.h中实现相关的功能。

3.2队列的实现1.typedef struct {2. ElemType* data;3.int head;//队头指针4.int tail;//队尾指针5.} SqQueue;队列主要用于二叉树遍历过程中的层序遍历,从根节点开始分别将左右孩子放入队列,然后从对头开始输出。

数据结构课程设计_二叉树操作

数据结构课程设计_二叉树操作

数据结构课程设计_⼆叉树操作数据结构课程设计题⽬:⼆叉树的操作学⽣姓名:学号:系部名称:计算机科学与技术系专业班级:指导教师:课程设计任务书第⼀章程序要求1)完成⼆叉树的基本操作。

2)建⽴以⼆叉链表为存储结构的⼆叉树;3)实现⼆叉树的先序、中序和后序遍历;4)求⼆叉树的结点总数、叶⼦结点个数及⼆叉树的深度。

第⼆章算法分析建⽴以⼆叉链表为存储结构的⼆叉树,在次⼆叉树上进⾏操作;1先序遍历⼆叉树的操作定义为:若⼆叉树唯恐则为空操作;否则(1)访问根节点;(2)先序遍历做字数和;(3)先序遍历有⼦树;2中序遍历⼆叉树的操作定义为:若⼆叉树为空,则空操作;否则(1)中序遍历做⼦树;(2)访问根节点;(3)中序遍历有⼦树;3后续遍历⼆叉树的操作定义为:若⼆叉树为空则为空操作;否则(1)后序遍历左⼦树;(2)后序遍历右⼦树;(3)访问根节点;⼆叉树的结点总数、叶⼦结点个数及⼆叉树的深度。

第三章⼆叉树的基本操作和算法实现⼆叉树是⼀种重要的⾮线性数据结构,是另⼀种树形结构,它的特点是每个节点之多有两棵⼦树(即⼆叉树中不存在度⼤于2的结点),并且⼆叉树的结点有左右之分,其次序不能随便颠倒。

1.1⼆叉树创建⼆叉树的很多操作都是基于遍历实现的。

⼆叉树的遍历是采⽤某种策略使得采⽤树形结构组织的若⼲年借点对应于⼀个线性序列。

⼆叉树的遍历策略有四种:先序遍历中续遍历后续遍历和层次遍历。

基本要求1 从键盘接受输⼊数据(先序),以⼆叉链表作为存储结构,建⽴⼆叉树。

2 输出⼆叉树。

3 对⼆叉树进⾏遍历(先序,中序,后序和层次遍历)4 将⼆叉树的遍历打印出来。

⼀.问题描述⼆叉树的很多操作都是基于遍历实现的。

⼆叉树的遍历是采⽤某种策略使得采⽤树型结构组织的若⼲结点对应于⼀个线性序列。

⼆叉树的遍历策略有四种:先序遍历、中序遍历、后序遍历和层次遍历。

⼆.基本要求1.从键盘接受输⼊数据(先序),以⼆叉链表作为存储结构,建⽴⼆叉树。

2.输出⼆叉树。

数据结构课程设计-二叉树

数据结构课程设计-二叉树

《数据结构》课程设计说明书二叉平衡树算法实现班级组别:二指导老师:完成时间:2019.6.19 组长:学号:05 组员1:学号:33 组员2:学号:组员3:学号:成绩:目录目录一、课题设计任务 (2)二、任务分析 (2)1. 数据逻辑结构(算法描述) (2)2. 关键算法思想 (3)三、概要设计(总体设计) (3)四、详细设计 (4)1. 数据存储结构 (4)2. 各模块流程图及算法 (5)3. 算法效率分析 (9)五、测试 (10)1. 删除 (10)2. 查找 (10)3. 遍历 (10)六、课程设计心得 (10)七、参考文献 (11)八、附录 (11)一、课题设计任务针对给定的序列建立存储结构,实现各种遍历;实现树的生成,实现数据的查找、插入、删除,输出各种遍历。

二、任务分析1.数据逻辑结构(算法描述)//中序--递归void InorderTra(PNode root) {if (root) {InorderTra(root->leftChild); //中序遍历左子树printf("%d\t", root->keyValue); //访问根节点InorderTra(root->rightChild); //中序遍历右子数}}//前序--递归void PreOrderTra(PNode root) {if (root != NULL) {printf("%d\t", root->keyValue); //访问根节点PreOrderTra(root->leftChild); //前序遍历左子树PreOrderTra(root->rightChild); //前序遍历右子数}}//后序--递归void PostOrderTra(PNode root) {if (root) {PostOrderTra(root->leftChild); //后序遍历左子树PostOrderTra(root->rightChild); //后序遍历右子树printf("%d\t", root->keyValue); //访问根节点}}//求树的最大深度int getDeep(PNode root) {if (!root) {return 0;}int leftDeep = getDeep(root->leftChild) + 1;int rightDeep = getDeep(root->rightChild) + 1;return leftDeep > rightDeep ? leftDeep : rightDeep;}//从根节点开始打印出所有层void printByLevel(PNode root, int deep) {for (int i = 0; i < deep; i++) {LevelOrderTra(root, i);}printf("\n");}2.关键算法思想树的生成过程保持左右平衡,插入删除过程中保证树的平衡。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计题目:二叉树的操作学生姓名:学号:系部名称:计算机科学与技术系专业班级:指导教师:课程设计任务书第一章程序要求1)完成二叉树的基本操作。

2)建立以二叉链表为存储结构的二叉树;3)实现二叉树的先序、中序和后序遍历;4)求二叉树的结点总数、叶子结点个数及二叉树的深度。

第二章算法分析建立以二叉链表为存储结构的二叉树,在次二叉树上进行操作;1先序遍历二叉树的操作定义为:若二叉树唯恐则为空操作;否则(1)访问根节点;(2)先序遍历做字数和;(3)先序遍历有子树;2中序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则(1)中序遍历做子树;(2)访问根节点;(3)中序遍历有子树;3后续遍历二叉树的操作定义为:若二叉树为空则为空操作;否则(1)后序遍历左子树;(2)后序遍历右子树;(3)访问根节点;二叉树的结点总数、叶子结点个数及二叉树的深度。

第三章二叉树的基本操作和算法实现二叉树是一种重要的非线性数据结构,是另一种树形结构,它的特点是每个节点之多有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的结点有左右之分,其次序不能随便颠倒。

1.1二叉树创建二叉树的很多操作都是基于遍历实现的。

二叉树的遍历是采用某种策略使得采用树形结构组织的若干年借点对应于一个线性序列。

二叉树的遍历策略有四种:先序遍历中续遍历后续遍历和层次遍历。

基本要求1 从键盘接受输入数据(先序),以二叉链表作为存储结构,建立二叉树。

2 输出二叉树。

3 对二叉树进行遍历(先序,中序,后序和层次遍历)4 将二叉树的遍历打印出来。

一.问题描述二叉树的很多操作都是基于遍历实现的。

二叉树的遍历是采用某种策略使得采用树型结构组织的若干结点对应于一个线性序列。

二叉树的遍历策略有四种:先序遍历、中序遍历、后序遍历和层次遍历。

二.基本要求1.从键盘接受输入数据(先序),以二叉链表作为存储结构,建立二叉树。

2.输出二叉树。

3.对二叉树进行遍历(先序、中序、后序和层次遍历)。

4.将二叉树的遍历结果打印输出。

三.提示与分析1.主要数据类型①二叉链表# define DataType char /*元素类型*/typedef struct BiTNode{DataType data;struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;②二叉树的遍历序列DataType preorder[n];DataType inorder[n];DataType postorder[n];2.基本功能分析①采用教材上类似于先序遍历的方法逐个输入结点,建立二叉链表存储的二叉树。

②采用递归算法对二叉树分别进行先序、中序、后序遍历。

③以队列为辅助结构实现二叉树的层次遍历。

④结合先序遍历,以凹入表形式输出二叉树。

//定义二叉树结点结构和操作的头文件btree1.h//定义二叉树结点值的类型为字符型typedef char ElemType;//定义二叉树结点类型struct BTreeNode {ElemType data;BTreeNode* left;BTreeNode* right;};//初始化二叉树,即把树根指针置空void InitBTree(BTreeNode*& BT);//判断二叉树是否为空bool BTreeEmpty(BTreeNode* BT);1.1.1 二叉树的遍历二叉树的遍历即是如何按照某条路径寻访每一个结点,使得每个结点均被访问一次,而且仅被访问一次。

“访问”的含义很广,可以是对结点做出各种处理,如输出结点的信息等。

遍历对线性结构来说是一个容易解决的问题,而对于二叉树则不然,由于二叉树是一种非线性结构,每个结点都有可能有俩棵子树,因而需要寻找一种规律,以便使二叉树上的结点都能够排列在线性队列上,从而便于遍历。

二叉树室友三个基本单位组成的:根节点左子树和右子树。

因而遍历着三个部分,便是遍历了整个二叉树。

void TraverseBTree(BTreeNode* BT, int mark){if(mark==1) { //先序遍历if(BT!=NULL) {cout<<BT->data<<' ';TraverseBTree(BT->left,mark);TraverseBTree(BT->right,mark);}}else if(mark==2) { //中序遍历if(BT!=NULL) {TraverseBTree(BT->left,mark);cout<<BT->data<<' ';TraverseBTree(BT->right,mark);}}else if(mark==3) { //后序遍历if(BT!=NULL) {TraverseBTree(BT->left,mark);TraverseBTree(BT->right,mark);cout<<BT->data<<' ';}}else if(mark==4) //按层遍历{const MaxLength=30;BTreeNode* Q[MaxLength];//定义存储二叉树结点指针的数组空间作为队列使用int front=0, rear=0;//定义队首指针和队尾指针,初始均置0表示空队BTreeNode* p;}1.1.1.1 求二叉树的结点总数叶子节点个数及二叉树的深度//用于求二叉树深度的递归函数int Depth(BTreeNode* BT){if(BT==NULL)return 0; //对于空树,返回0并结束递归else{//计算左子树的深度int dep1=Depth(BT->left);//计算右子树的深度int dep2=Depth(BT->right);//返回树的深度if(dep1>dep2) return dep1+1;else return dep2+1;}}//求二叉树中所有结点数int BinaryTree::BTreeCount(){return Count(root);}//用于求二叉树中所有结点数的递归函数int Count(BTreeNode* BT){if(BT==NULL) return 0;elsereturn Count(BT->left)+Count(BT->right)+1;}//求二叉树中所有叶子结点数int BinaryTree::BTreeLeafCount(){return LeafCount(root);}//用于求二叉树中所有叶子结点数的递归函数int LeafCount(BTreeNode* BT){if(BT==NULL) return 0;else if(BT->left==NULL && BT->right==NULL) return 1;else return LeafCount(BT->left)+LeafCount(BT->right); }第四章调试结果测试数据1.输入:ABC+DE+G++F+++(其中+表示空格字符)则输出结果为:先序:ABCDEGF中序:CBEGDFA后序:CGEFDBA2.输入:AB+DG+++CE++F++先序:ABDGCEF中序:BGDAECF后序:GDBEFCA3.输入:ABDF++++C+E+G++先序:ABDFCEG中序:FDBACEG后序:FDBGECA第五章实习体会数据结构的实习是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. 回顾起此数据结构实习,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次实习使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

经过两个星期的上机实践学习,使我对数据机构有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己对知识点的掌握不够熟悉,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。

通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

在今后的日子里,认真对待每意见事,争取做到最好,努力将知识与实践相结合,不断巩固,加深所学的知识,做到学以致用。

参考文献:1.严蔚敏、吴伟民,《数据结构》(C语言版),北京:清华大学出版社,2006.52.宁正元、易金聪,《数据结构习题解析与上机实验指导》,中国水利水电出版社、上海交通大学出版社、东南大学出版社,2002.63.刘怀亮,《数据结构习题解析与实验指导》(C语言描述),冶金工业出版社,2005.2目录第一章程序要求—————————————— 1第二章算法分析—————————————— 1第三章二叉树的基本操作和算法实现——————— 11.1 二叉树的创建---------------------------------- 41.1.1 二叉树的遍历-------------------------------- 71.1.1.1 求二叉树的结点个数叶子节点个数及二叉树的深度--------------------- 7 第四章调试结果———————————————8 第五章实习体会———————————————9。

相关文档
最新文档