数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换

存储方式

树的存储可以表示为顺序存储或者链式存储

顺序存储

利用顺序存储可以用三种形式表示:

双亲表示法:(存储它们父亲的下标,有利于找双亲)
孩子表示法:(存储他们孩子的下标,没有的话存储-1,有利于找孩子)
双亲孩子表示法:也就是将前两个表示法合并起来,这样都好找

参照图:
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换

如何表示看下图:(a)都是存父亲的数组下标位置(b)都是存孩子的下标位置 (c)两者合并
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换

链式存储树

看一下怎么又顺序单链表表示孩子
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换
每个first地址都是指向他们的孩子位置

树之间的转换

1.树转为二叉树
孩子兄弟表示法如何表示:
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换

2.二叉树转为树
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换
右斜线都是兄弟,直接化为同一层,左边为儿子,直接转换过来

3.森林转二叉树
和之前树二叉树类似,兄弟都在右斜线上
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换

这里看下二叉树概念:

(把树变为二叉树从而更好进行数据存储和访问)
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换

二叉树的性质
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换
对于n0 = n2+1
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换
————————————————————————————————————————

对于二叉树的顺序存储
数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换
将ABCD分别看成下标0123,设置两个数组根据下标分别存放左右孩子

链式存储二叉树

数据结构——树 基本概念 顺序存储 链式存储 树与二叉树之间转换
每个节点只有两个孩子,分别为左右孩子