[精品]【数据结构】二叉树实验报告.docx

[精品]【数据结构】二叉树实验报告.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

[精品]【数据结构】二叉树实验报告

二叉树实验报告

一、实验目的:

1.掌握二叉树的基本操作;

2.理解二叉树的性质;

3.熟悉二叉树的广度优先遍历和深度优先遍历算法。

二、实验原理:

1.二叉树是一种树形结构,由n(n=0)个节点组成;

2.每个节点最多有两个子节点,称为左子节点和右子节点;

3.二叉树的遍历分为四种方式:前序遍历、中序遍历、后序遍历和层次遍历。

三、实验环境:

1.编程语言:C++;

2.编译器:Dev-C++。

四、实验内容:

1.定义二叉树节点结构体:

structBinaryTreeNode

{

intdata;//节点数据

BinaryTreeNode*leftChild;//左子节点指针

BinaryTreeNode*rightChild;//右子节点指针

};

2.初始化二叉树:

queueBinaryTreeNode*q;//使用队列存储节点

q.push(root);

inti=1;//创建子节点

while(!q.empty()ilength)

{

BinaryTreeNode*node=q.front();

q.pop();

if(data[i]!=-1)//创建左子节点

{

BinaryTreeNode*leftChild=newBinaryTreeNode;

leftChild-data=data[i];

leftChild-leftChild=nullptr;

leftChild-rightChild=nullptr;

node-leftChild=leftChild;

q.push(leftChild);

}

i++;

if(data[i]!=-1)//创建右子节点

{

BinaryTreeNode*rightChild=newBinaryTreeNode;

rightChild-data=data[i];

rightChild-leftChild=nullptr;

rightChild-rightChild=nullptr;

node-rightChild=rightChild;

q.push(rightChild);

}

i++;

}

returnroot;

}

3.前序遍历二叉树:

五、实验结果:

输入:intdata[]={1,2,3,4,-1,-1,5,6,-1,-1,7,8};

输出:

前序遍历结果:12453678

中序遍历结果:42516378

后序遍历结果:45268731

层次遍历结果:12345678

通过本次实验,我深入理解了二叉树的性质和遍历方式,并掌握了二叉树的基本操作。在实践中,我发现层次遍历需要使用队列来存储节点,而三种递归遍历方式则是通过不断递归子树来完成的。在应用时,需要根据实际问题选择不同的遍历方式。

文档评论(0)

偶遇 + 关注
实名认证
内容提供者

个人介绍

1亿VIP精品文档

相关文档