
输出中序遍历的结点包括结点的标记域与数据域
解析输入字符串,分割成单个字符代表节点。 递归构建树,确定每个节点的左孩子和右孩子。 进行中序遍历,记录每个节点的ltag、data和rtag。 输出结果,按行格式显示每个节点的ltag、data和rtag。
发布日期:2021-05-07 17:58:51
浏览次数:26
分类:精选文章
本文共 1841 字,大约阅读时间需要 6 分钟。
扩展二叉树的先序遍历序列处理方法及中序遍历结果输出
首先,理解扩展二叉树的结构及其遍历方式。扩展二叉树中,叶子结点用‘#’表示,其余节点为普通节点。先序遍历(Preorder Traversal)是指先访问左子树,接着根节点,最后右子树。
处理步骤如下:
代码实现关键点:
- 递归构建树时,根据节点是否为‘#’确定其是否为叶子节点,并设置ltag和rtag。
- 中序遍历时,处理左子树、当前节点、右子树,确保顺序正确。
- 处理输入字符串时,正确分割并处理特殊符号‘#’。
示例分析:输入序列“A B # # C D # E # F # # G H # I K # # # #”对应结构如图,输出结果为各节点的ltag、data和rtag。
代码实现:
#include#include using namespace std;struct Node { int ltag, rtag; char data; Node* Lchild, *Rchild;};class Text {private: Node* root;public: Text() { root = Creat(); } ~Text() { Release(root); } void PreOrder() { PreOrder(root); } void Judge(Node* Bt) { if (Bt->Lchild == NULL) { Bt->ltag = 1; } else { Bt->ltag = 0; } if (Bt->Rchild == NULL) { Bt->rtag = 1; } else { Bt->rtag = 0; } cout << Bt->ltag << " " << Bt->data << " " << Bt->rtag << endl; } void PreOrder(Node* Bt) { if (Bt == NULL) return; PreOrder(Bt->Lchild); Judge(Bt); PreOrder(Bt->Rchild); } Node* Creat() { char ch; cin >> ch; if (ch == '#') { return NULL; } else { Node* Bt = new Node; Bt->data = ch; Bt->Lchild = Creat(); Bt->Rchild = Creat(); return Bt; } } void Release(Node* Bt) { if (Bt == NULL) return; Release(Bt->Lchild); Release(Bt->Rchild); delete Bt; } static void main() { Text T; T.PreOrder(); }};int main() { Text::main(); return 0;}
代码解释:
- 结构Node包含ltag、data、rtag和左右子树指针。
- Text类处理树的构建与遍历,使用递归方法。
- Creat函数解析输入字符,构建节点,处理叶子节点‘#’。
- PreOrder函数进行中序遍历,Judge函数输出节点信息。
- 主函数启动程序,执行前序遍历并输出结果。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月15日 19时02分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SpringMVC的Model对象的使用
2019-03-04
文本读取和csv文件生成工具类的编写
2019-03-04
@Import注解---导入资源
2019-03-04
重读&笔记系列-《Linux多线程服务端编程》第一章
2019-03-04
解决ubuntu在虚拟机(VMware)环境下不能联网的问题
2019-03-04
LeetCode - 字符串相乘
2019-03-04
C# 适配器模式
2019-03-04
二分查找与插入排序的结合使用
2019-03-04
892 三维形体的表面积(分析)
2019-03-04
40. 组合总和 II(dfs、set去重)
2019-03-04
16 最接近的三数之和(排序、双指针)
2019-03-04
python中的all函数
2019-03-04
1137 第 N 个泰波那契数(迭代、记忆性递归)
2019-03-04
279 完全平方数(bfs)
2019-03-04
865 具有所有最深结点的最小子树(递归)
2019-03-04
738 单调递增的数字(找出逆序的位置)
2019-03-04
410 分割数组的最大值(二分查找、动态规划)
2019-03-04
875 爱吃香蕉的珂珂(二分查找)
2019-03-04
450 删除二叉搜索树中的节点(递归删除节点)
2019-03-04
769 最多能完成排序的块(分析)
2019-03-04