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

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

树的存储结构

   

双亲表示法

 

孩子表示法:

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

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

 

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

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

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

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

森林和二叉树的转换

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

树和二叉树的转换

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

树和森林的遍历

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

树的遍历

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

        先访问根结点,

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

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

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

        后根访问根的每棵子树,

        然后访问根结点。

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

森林的遍历:

先序

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

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

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

先序遍历序列

中序

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

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

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

中序遍历序列

 

转载地址:http://gglya.baihongyu.com/

你可能感兴趣的文章
应用多级缓存模式支撑海量读服务
查看>>
spring boot @ConditionalOnxxx相关注解总结
查看>>
Mysql内存参数优化
查看>>
通配符的匹配很全面, 但无法找到元素 'xxxx'
查看>>
我收集的IT集成界的国标。
查看>>
系统集成资质培训 - 挣值分析难点题目解析
查看>>
CentOS6 图形界面(gnome)安装
查看>>
myeclipse或者eclipse中建立的web项目下面出现了.classpath、.mymedata、.project处理方式...
查看>>
关于grep正则表达式-1
查看>>
10.15 iptables filter表案例 10.16/10.17/10.18 iptable
查看>>
quota&automount 笔记@2
查看>>
LeetCode:Pow(x, n) - 求指定数字x的整数次幂
查看>>
android混淆代码bug跟踪
查看>>
Lua程序块(chunk)
查看>>
我的友情链接
查看>>
Android.mk文档规范
查看>>
导出excel
查看>>
如何在微信小程序中使用async/await
查看>>
Java 获取当前操作系统信息
查看>>
Linux Centos 7 - 系统安装
查看>>