树和二叉树(2)

二叉树的存储结构

顺序存储

QQ图片20200428202011.png

  • 因为二叉树比较灵活,顺序表示会浪费大量的空间,所以通常不使用,除非是彻底二叉树或满二叉树
链式表示

QQ图片20200428202224.png
QQ图片20200428202357.png

静态链表

QQ图片20200428202518.png

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

二叉树遍历的递归算法

QQ图片20200428202835.png

二叉树遍历应用

QQ图片20200428203137.pngQQ图片20200428203223.png
QQ图片20200428203426.pngQQ图片20200428203544.pngQQ图片20200428203646.pngQQ图片20200428203738.pngQQ图片20200428203807.png

二叉树遍历的非递归算法

树的存储结构

顺序表示

双亲表示

QQ图片20200428204016.png
优势:结构简单,一个顺序表就能存储一棵树
缺点:是静态结构,不方便作节点的插入和删除;有存储空间浪费;因为对树的应用大都是从节点找子女,而双亲表示经常使用于从节点找双亲,而应用在从节点找子女比较麻烦,要全扫描一遍。算法

链式结构

多重链表(孩子表示法)
  • 与二叉链表类似,浪费空间会比较多QQ图片20200428204616.png
孩子链表

QQ图片20200428204825.png
从数据和关系两部分考虑,先构造数组,存储每个节点(数据部分);子女和父母的关系则用连式结构表示。即先用数组存储全部节点,再每一个节点生成单链表存储该节点的全部子女数组

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

若是把普通树改形成很是熟悉的二叉树形式,就能够造成一一对应关系,就能够用二叉树存储普通树,又不丢失普通树的信息
QQ图片20200428205304.pngspa

相关文章
相关标签/搜索