二叉树的基本术语 叶子 leaf :度为0的结点,也称为终端结点。 分支结点:度不为0的结点,也称为非终端结点或内部结点。 二叉树的基本术语 广度优先(逐层)遍历 队列实现广度优先遍历 template void LevelOrder BinaryTreeNode *t //对*t逐层遍历 BinaryTreeNode *p t; LinkedQueue BinaryTreeNode * Q; while p cout p- data;//访问p if p- LeftChild Q.Add p- LeftChild ; //将p的孩子放入队列 if p- RightChild Q.Add p- RightChild ; //访问下一个结点 if Q.IsEmpty return; else Q.Delete p ;//相当于p s.top ; s.pop ; 先序遍历递归算法 template void PreOrder BinaryTreeNode *t //对*t进行前序遍历 if t cout t- data; //访问根结点 PreOrder t- LeftChild ; //前序遍历左子树 PreOrder t- RightChild ; //前序遍历右子树 先序遍历的非递归实现 先序遍历的非递归实现 先序遍历的非递归实现 template void PreOrderTranverse BinaryTreeNode *t Stack BinaryTreeNode * s 20 ; BinaryTreeNode *p; p t; s.add p ; while !s.IsEmpty s.delete p ;//相当于p s.top ; s.pop ; cout p- data; if p- rightchild s.add p- rightchild ; if p- leftchild s.add p- leftchild ; 后序遍历的非递归实现算法 0. 将根节点作为当前节点 1.进栈过程: a 如果当前节点不空且具有左子树,将当前节点压入栈中,否则进入2 b 将当前节点的左子树的根节点设置为当前节点 c 重复a 2.出栈过程: a 如果当前节点不空且没有右子树,或者其右子树的根节点已经访问,访问之,否则进入3 b 若栈空,结束,否则取出当前栈顶节点作为当前节点 c 重复a 3.将当前节点压入栈中 4.将当前节点的右子树的根节点设为当前节点,重复1 后序遍历的非递归实现 二叉树操作算法举例 遍历二叉树是二叉树各种操作的基础,即很多操作可以在遍历过程中完成。 根据遍历算法的程序框架,可以派生出很多关于二叉树的应用算法,如求结点的双亲、结点的孩子,判定结点所在层次等,甚至可以在遍历过程中生成结点,建立二叉树的存储结构。 int CountLeaf BinaryTreeNode * root if root NULL return 0; else if root- lchild NULLroot- rchild NULL return 1; else return CountLeaf root- lchild + CountLeaf root- rchild ; bool search BinaryTreeNode * root, int k Using std::stack; //使用STL中的stack stack BinaryTreeNode * aStack; BinaryTreeNode * p root; while !aStack.empty || p if p aStack.push p ; //当前结点入栈 p p- Lchild; else p aStack.top ; // 返回栈顶 if p- data k return true; //找到关键值k的结点,返回true p p- Rchild; aStack.pop ; //栈顶元素退栈 return false; //查找完毕返回false template class BinaryTreeNode public: BinaryTreeNode LeftChild RightChild 0; BinaryTreeNode const T e data e; LeftChild RightChild 0; BinaryTreeNode const Te, BinaryTreeNode *l,BinaryTreeNode *r data e;
您可能关注的文档
- 四大气压强解析.ppt
- 数据的收集、整理、描述复习解析.ppt
- 四大珍惜动物解析.ppt
- 四单元检测题解析.doc
- 四对象的组织管理解析.ppt
- 数据的收集说课稿解析.ppt
- 数据的图表展示解析.ppt
- 四个太阳(公开课)解析.ppt
- 四环素的发酵参数及生产工艺研究解析.doc
- 数据分布特征的描述解析.ppt
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- 塔吊工作安全培训内容课件.pptx VIP
- 2024-2025学年天津市部分区七年级(上)期末历史试卷(含答案).docx
- 天津大学物理化学教学课件ppt合集.pptx
- 土豆种植时间和方法.doc VIP
- SMAR公司DT301密度计说明书.pdf
- 2、高鸿业宏观经济学教案.doc VIP
- 高杆灯取电照明装置.pdf VIP
- Unit 2 Expressing yourself Part B let's learn 教案 三年级英语下册 人教PEP版.docx VIP
- 【通用】马年猜猜乐PPT(猜成语)打印版【课件】.pptx
- PDCA循环-提高手术间无菌物品定位放置规范率PPT优秀案例.pptx
原创力文档

文档评论(0)