树与二叉树的转换、树的遍历
来源:互联网 发布:js数据类型转换 编辑:程序博客网 时间:2024/06/05 19:54
树和二叉树不同,可以有0到n个孩子,所以实现起来很麻烦,但我们可以借助树的孩子兄弟表示法把树转换成二叉树。
在孩子兄弟表示法中,某个结点的第一个孩子结点的指针是二叉树中其左孩子结点指针,右兄弟结点指针是二叉树中右孩子结点指针。
树转换为二叉树过程:
(1)树中所有相同双亲结点的兄弟结点之间加一条连线;
(2)对树中不是双亲结点的第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线;
(3)整理所有保留的连线,根据连线摆放成二叉树的结构,转换完成。
二叉树还原为树过程:
(1)若某结点是其双亲结点的左孩子,则把该结点的右孩子,右孩子的右孩子······都与该结点的双亲结点用线连起来;
(2)删除原二叉树中所有双亲结点与右孩子结点的连线;
(3)整理所有保留的连线,根据连线摆放成树的结构,转换完成。
树的遍历:
主要有先根遍历和后根遍历两种,先根遍历序列一定和该树转换的二叉树的前序遍历序列相同;后根遍历序列一定和该树转换的二叉树的中序遍历序列相同。
先根遍历过程:
(1)访问根结点;
(2)按照从左到右的次序先根遍历根结点的每一棵树。
后根遍历过程:
(1)按照从左到右的次序后根遍历根结点的每一棵子树;
(2)访问根结点。
图中先根遍历序列为:ABEJFCGKLDHI 后根遍历序列为:JEFBKLGCHIDA
0 0
- 树与二叉树的转换、树的遍历
- 二叉树的遍历 (二叉树遍历转换)
- 树、森林与二叉树的转换及遍历
- 数据结构(树和二叉树的转换与遍历)
- 二叉树的遍历 及前中序转换成后序遍历
- 1489 求二叉树的先序遍历 1291 数据结构上机测试4.1:二叉树的遍历与应用1【二叉树遍历顺序转换】
- 树 与 二叉树 的遍历
- C#与数据结构--二叉树的遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- C#与数据结构--二叉树的遍历
- 二叉树的构建与遍历
- 二叉树的创建与遍历(递归)
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的建立与遍历
- 空指针操作在linux和windows下的区别
- MATLAB 读写excel数据
- C# 发布windows 服务
- 登录工程二:现代 Web 应用的典型身份验证需求
- elasticsearch笔记_索引文档时的集群内部操作(二)
- 树与二叉树的转换、树的遍历
- SQLiteDatabase填充spinner(populating spinner from SQLiteDatabase)
- jsp中自定义标签的学习
- 【C#】wpf中的xmlns命名空间为什么是一个网址,代表了什么意思
- 1064. 朋友数
- [FFT] 快速傅里叶变换学习笔记
- NOIP2013 Day1
- Nginx配置反向代理安装和配置-初探
- 【数据结构-堆排序】堆排序 Heap Sort