- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)