树和二叉树(2)

二叉树的存储结构

顺序存储

树和二叉树(2)_第1张图片

  • 由于二叉树比较灵活,顺序表示会浪费大量的空间,因此一般不使用,除非是完全二叉树或满二叉树
链式表示

树和二叉树(2)_第2张图片

静态链表

树和二叉树(2)_第3张图片

  • 以线性结构存储,所以对于存储空间的分配不是很灵活,如果实现已知长度的树,要插入删除数据就不可以

二叉树遍历的递归算法

树和二叉树(2)_第4张图片

二叉树遍历应用

树和二叉树(2)_第5张图片

二叉树遍历的非递归算法

树的存储结构

顺序表示

双亲表示

树和二叉树(2)_第6张图片
优点:结构简单,一个顺序表就能存储一棵树
缺点:是静态结构,不方便做节点的插入和删除;有存储空间浪费;由于对树的应用大都是从节点找子女,而双亲表示常用于从节点找双亲,而应用在从节点找子女比较麻烦,要全扫描一遍。

链式结构

多重链表(孩子表示法)
  • 与二叉链表相似,浪费空间会比较多树和二叉树(2)_第7张图片
孩子链表

树和二叉树(2)_第8张图片
从数据和关系两部分考虑,先构造数组,存储每一个节点(数据部分);子女和父母的关系则用连式结构表示。即先用数组存储所有节点,再每个节点生成单链表存储该节点的所有子女

树的左子女右兄弟表示法(二叉链表表示)

如果把普通树改造成非常熟悉的二叉树形式,就可以形成一一对应关系,就可以用二叉树存储普通树,又不丢失普通树的信息
树和二叉树(2)_第9张图片

你可能感兴趣的:(数据结构)