- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二叉树周游
5-2 二叉树;5.1 二叉树的概念
5.2 二叉树的周游
5.3 二叉树的存储结构
5.4 二叉搜索树
5.5 堆与优先队列
5.6 Huffman树及其应用
5.7 二叉树知识点总结;5.2 二叉树的周游 ;5.2.1 抽象数据类型;5.2.1 抽象数据类型;5.2.1 抽象数据类型;5.2.1 抽象数据类型;5.2.1 抽象数据类型;5.2.1 抽象数据类型;遍历(周游)二叉树;遍历方式
深度优先遍历
按根、左子树、右子树三个部分进行访问
广度优先遍历(逐层遍历)
从根节点开始,向下逐层访问每个节点,在每一层次上,从左到右访问每个节点。;5.2.2 深度优先周游二叉树;基于二叉树的递归定义,这三种深度优先周游的递归定义
(1) 前序法(tLR次序,preorder traversal)。其递归定义是
访问根结点;
按前序周游左子树;
按前序周游右子树。
(2) 中序法(LtR次序,inorder traversal)。其递归定义是
按中序周游左子树;
访问根结点;
按中序周游右子树。
(3) 后序法(LRt次序,postorder traversal)。其递归定义是
按后序周游左子树;
按后序周游右子树;
访问根结点。;5.2.2 深度优先周游二叉树;5.2.2 深度优先周游二叉树;若二叉树为空,则返回;否则;A;【算法5.3】 深度优先周游二叉树或其子树
templateclass T
void BinaryTreeT::PreOrder (BinaryTreeNodeT *root) {
// 前序周游二叉树或其子树
if (root != NULL) {
Visit(root-value()); // 访问当前结点
PreOrder(root-leftchild()); // 前序周游左子树
PreOrder(root-rightchild()); // 前序周游右子树
}
};递归算法转化为非递归算法;先序遍历的非递归实现;先序遍历的非递归实现;先序遍历的非递归实现;若二叉树为空,则返回;否则;A;中序遍历递归算法;非递归中序周游算法的主要思想是:
每遇到一个结点就把它推入栈,然后去周游其左子树
周游完左子树后,从栈顶托出这个结点并访问之
然后按照其右链接指示的地址再去周游该结点的右子树;A;栈实现中序遍历非递归算法;若二叉树为空,则返回;否则;A;后序遍历递归算法;后序遍历的非递归实现;后序遍历的非递归实现;后序遍历的非递归实现;【算法5.6】 非递归后序周游二叉树或其子树
enum Tags{Left,Right}; // 定义枚举类型标志位
template class T
class StackElement { // 栈元素的定义
public:
BinaryTreeNodeT* pointer; // 指向二叉树结点的指针
Tags tag; // 标志位
};
templateclass T
void BinaryTreeT::PostOrderWithoutRecursion(BinaryTreeNodeT* root) {
using std::stack; // 使用STL的栈
StackElementT element;; stackStackElementT aStack;
BinaryTreeNodeT* pointer;
if (root == NULL) // 如果是空树则返回
return;
else pointer = root;
while (!aStack.empty() || pointer) {
//如果当前指针非空则压栈并下降到最左子结点
while (pointer != NULL) {
element.pointer = pointer;
element.tag = Left; // 置标志位为Left, 表示进入左子树
aStack.push(e
您可能关注的文档
最近下载
- 学校--以老带新”实施方案.docx VIP
- 2022《贯彻执行中央八项规定、推进作风建设综述》专题PPT.ppt VIP
- -IATF 16949质量管理体系培训 .ppt VIP
- 医美整形线上平台留客升单策略.docx VIP
- 高中物理力学——动态平衡问题处理方法.pdf VIP
- 一种可实时监控的负压引流系统及其使用方法.pdf VIP
- 2022年新版《义务教育体育与健康课程标准》考试学习资料.docx VIP
- 2024-2025学年天津市南开区七年级(下)期末数学试卷.pdf VIP
- IATF16949质量管理体系模板或IATF16949质量管理手册.docx VIP
- 外研版八年级上册 Unit 1 单元测试卷答案及解析 新版 2025年新外研版八年级上册.docx
文档评论(0)