博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树与森林的存储、遍历和树与森林的转换
阅读量:5989 次
发布时间:2019-06-20

本文共 900 字,大约阅读时间需要 3 分钟。

树的存储结构

   

双亲表示法

 

孩子表示法:

(a)多重链表(链表中每个指针指向一棵子树的根结点);

(b)把每个跟结点的孩子结点排列起来,看成一个线性表,且以单链表做存储结构.且N个头指针也组成一个线性表.

 

孩子兄弟表示法://二叉树表示法或二叉链表表示法

以二叉链表做树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点(fchild 和nsibling)

//孩子兄弟表示法typedef struct CSNode{    int data;    CSNode *fchild ,*nsibling;} CSNode, *CSTree;

二叉树和树都可用二叉链表作存储结构,则以二叉链表作为媒介可导出树与二叉树之间的一一对应关系。

森林和二叉树的转换

由树的二叉链表表示定义知道:任何一棵和树对应的二叉树的右子树必空。若将森林中第二棵树的根结点看成第一棵树的根结点的兄弟,如此重复……则可以导出森林和二叉树的对应关系。

树和二叉树的转换

使用孩子兄弟表示法来转换,土办法:可以把有同一个双亲结点的各个孩子结点有虚线串起来,把每层的每个结点分支从左到右除去第一个外,其余都剪掉,则剩余的图(包括虚线)就是二叉树。详细过程如下:

树和森林的遍历

只有两种,森林得失先序和中序,树的是先跟和后跟

树的遍历

先根遍历:(二叉树的先序遍历)

        先访问根结点,

        然后依次先根遍历根的每棵子树。

先根遍历序列,对应二叉树先序遍历

后根遍历:(二叉树的中序遍历)

        后根访问根的每棵子树,

        然后访问根结点。

后根遍历序列,对应二叉树的中序遍历

森林的遍历:

先序

  1.访问森林中第一棵树的根结点;

  2.先序遍历第一棵树中根结点的子树森林;

  3.先序遍历除去第一棵树之后剩余的树构成的森林.

先序遍历序列

中序

  1.中序遍历第一棵树中根结点的子树森林;

  2.访问森林中第一棵树的根结点;  

  3.中序遍历除去第一棵树之后剩余的树构成的森林.

中序遍历序列

 

辛苦的劳动,转载请注明出处,谢谢……
http://www.cnblogs.com/kubixuesheng/p/4391381.html
你可能感兴趣的文章
ENVI【非监督分类】
查看>>
Hive深入浅出
查看>>
uva 1594 Ducci Sequence <queue,map>
查看>>
40、JDBC相关概念介绍
查看>>
unix
查看>>
Spring Boot MyBatis 通用Mapper插件集成
查看>>
testNg vs junit 4.X @Test
查看>>
微信公众号用户OpenID同步导出系统
查看>>
如何自定义 maven中的archetype
查看>>
使用bitmap处理海量数据
查看>>
(转)Bootstrap 之 Metronic 模板的学习之路 - (5)主题&布局配置
查看>>
初学JavaScript之推測new操作符的原理
查看>>
MyBatis入门程序之整合Spring
查看>>
CommonClassLoader或SharedClassLoader加载的Spring如何访问并不在其加载范围内的用户程序呢...
查看>>
【Java学习笔记之六】java三种循环(for,while,do......while)的使用方法及区别
查看>>
微软 改变 开源【几个站点】
查看>>
html-webpack-plugin插件 根据模板生成多页面
查看>>
webApi文档好帮手-apidoc使用教程
查看>>
方差,协方差,自协方差,互协方差,自相关,互相关
查看>>
如何统计代码行数
查看>>