顺序存储二叉树
Ⅰ 二叉树的两种物理结构是什么
答:二叉树就物理结构来分可以分成:顺序存储结构和链式存储结构。
(1)顺序存储结构:
顺序存储结构,顾名思义就是二叉树的数据元素存放在一组连续的存储单元中。其主要有一下几个特点:
①逻辑上相邻的两个元素在物理位置上也是相邻的;
②操作删除和插入的时候,需要整体移动元素;
③需要预先分配空间,不能动态增长;
(2)链式存储结构:
链式存储结构中二叉树的每个结点至少包含三个域:数据域、左指针域和右指针域。其二叉树是通过指针实现,链式存储结构有以下几个特点:
①逻辑上相邻的两个元素在物理位置上不一定是相邻的;
②操作删除和插入的时候,不需要整体移动元素;只需要修改相应的指针即可;
③不需要预先分配空间;
④存储指针本身会消耗一定的存储的空间;
Ⅱ 一棵完全二叉树的顺序存储结构中存储数据元素为ABCDEF,则该二叉树的前序中序后序遍历各为什么
则该二叉树的前序遍历序列为ABDECF,中序遍历序列为DBEAFC,后序遍历序列为DEBFCA。
先序遍历二叉树规则:根-左-右
1、访问根结点;
2、先序遍历左子树;
3、先序遍历右子树。
中序遍历二叉树规则:左-根-右
1、先中序遍历左子树;
2、再访问根节点;
3、最后访问中序遍历右子树。
后序遍历二叉树规则:左-右-根
1、后序遍历左子树;
2、后序遍历右子树;
3、访问根结点。
(2)顺序存储二叉树扩展阅读
完全二叉树的特点
叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。需要注意的是,满二叉树肯定是完全二叉树,而完全二叉树不一定是满二叉树。
判断一棵树是否是完全二叉树的思路
1>如果树为空,则直接返回错;
2>如果树不为空:层序遍历二叉树;
2.1>如果一个结点左右孩子都不为空,则pop该节点,将其左右孩子入队列;
2.1>如果遇到一个结点,左孩子为空,右孩子不为空,则该树一定不是完全二叉树;
2.2>如果遇到一个结点,左孩子不为空,右孩子为空;或者左右孩子都为空;则该节点之后的队列中的结点都为叶子节点;该树才是完全二叉树,否则就不是完全二叉树。
Ⅲ 二叉树 两种存储结构的优缺点
顺序存储可能会浪费空间,但是读取某个指定的节点的时候效率比较高,链式存储相对二叉树比较大的时候浪费空间较少,但是读取某个指定节点的时候效率偏低O(nlogn)。
在数据的顺序存储中,由于每个元素的存储位置都可以通过简单计算得到,所以访问元素的时间都相同;而在数据的链接存储中,由于每个元素的存储位置保存在它的前驱或后继结点中,所以只有当访问到其前驱结点或后继结点后才能够按指针访问到。
(3)顺序存储二叉树扩展阅读:
分类:
顺序存储方法它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。
链接存储方法它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。