数组顺序存储二叉树

简介: 1.完全二叉树    完全二叉树由于其结构上的特点,通常采用顺序存储方式存储。一棵有n个结点的完全二叉树的所有结点从1到n编号,就得到结点的一个线性系列。    如下图:完全二叉树除最下面一层外,各层都被结点充满了,每一层结点的个数恰好是上一层结点个数的2倍,因此通过一个结点的编号就可以推知它的双亲结点及左,右孩子结点的编号:① 当 2i ≤ n 时,结点 i 的左孩子是 2i,否则结

1.完全二叉树


    完全二叉树由于其结构上的特点,通常采用顺序存储方式存储。一棵有n个结点的完全二叉树的所有结点从1到n编号,就得到结点的一个线性系列。

    如下图:完全二叉树除最下面一层外,各层都被结点充满了,每一层结点的个数恰好是上一层结点个数的2倍,因此通过一个结点的编号就可以推知它的双亲结点及左,右孩子结点的编号:

当 2i ≤ n 时,结点 i 的左孩子是 2i,否则结点i没有左孩子;

② 当 2i+1 ≤ n 时,结点i的右孩子是 2i+1,否则结点i没有右孩子;

③ 当 i ≠ 1 时,结点i的双亲是结点 i/2;

wKioL1VxFQexJ6rQAADyoOXy9yc156.gif


注意:由于数组下标从0开始,用数组模拟二叉树(当然也包括堆)的话,如果根节点的下标为0的话,则对于每个结点i,其左孩子下标为2*i+1;其右孩子下标为2*i+2。


2.一般二叉树


    对于一般的二叉树,如果仍按照从上至下,从左到右的顺序将树中的结点顺序存储在一维数组中,则数组元素下标之间的关系不能够反映二叉树中结点之间的逻辑关系。

    这时假设将一般二叉树进行改造,增添一些并不存在的空结点,使之成为一棵完全二叉树的形式,然后再用一维数组顺序存储。在二叉树中假设增添的结点在数组中所对应的元素值为"空"用^表示。

wKiom1VxE9ay_VjbAADLEAsJrFA338.gif



参考博文:

http://tech.ddvip.com/2014-05/1400680475210602.html

 

本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1658816

目录
相关文章
|
6月前
|
存储 算法 索引
【二叉树】的顺序存储(堆的实现)
【二叉树】的顺序存储(堆的实现)
50 0
|
6月前
|
存储
二叉树的存储结构
二叉树的存储结构
68 0
|
6月前
|
存储 算法 索引
线性表的顺序存储和链式存储
线性表的顺序存储和链式存储
52 0
|
3月前
|
存储 机器学习/深度学习 人工智能
4.线性表之数组
4.线性表之数组
48 0
|
7月前
|
存储
线性表的链式存储结构
线性表的链式存储结构
|
8月前
|
存储
二叉树——链式存储
✅<1>主页:我的代码爱吃辣 📃<2>知识讲解:数据结构——二叉树 🔥<3>创作者:我的代码爱吃辣 ☂️<4>开发环境:Visual Studio 2022 💬<5>前言:上期讲了二叉树的顺序存储,今天来讲一下二叉树的链式存储。
|
10月前
|
存储
线性表的链式存储——链表
线性表的链式存储——链表
124 0
|
11月前
|
存储
【数据结构二叉树的链式存储讲解及前中后序遍历和层次遍历】
二叉树的链式存储结构是指, 用链表来表示一棵二叉树, 即用链来指示元素的逻辑关系。
188 0
|
12月前
|
存储 人工智能 DataX
线性表的顺序存储实现
线性表的顺序存储实现
数据结构之广义表表示二叉树以及广义表建立二叉树
数据结构之广义表表示二叉树以及广义表建立二叉树
数据结构之广义表表示二叉树以及广义表建立二叉树

热门文章

最新文章