数据结构4.1树

本文详细介绍了树的数据结构,包括树的定义、基本术语、树的基本操作,如构造、清空、判断空树、插入和删除子树。特别讨论了二叉树的概念,如满二叉树、完全二叉树的特性,并阐述了树的存储结构,如顺序存储(二叉树的结构存储类型说明)和链式存储(二叉链表、三叉链表)。此外,还详述了二叉树的遍历方法(先序、中序、后序),以及树和森林的遍历策略。
摘要由CSDN通过智能技术生成

定义和基本术语

树(tree):是n(n>=0)个结点的有限集。在任意一颗非空树中:有且只有一个称为根(root) 的结点。其余的结点被分为m(m>=0)个互不相交的有限集,其中每个集合本身又是一棵树,称为根结点的子树(sub_tree)
树的表示法:有图示法、集合表示法、广义表表示法和缩进表示法。图示法表示的二叉树中,边的数目(或称分枝数,用e表示)恰好比结点数目(用n表示)少一个,即e = n - 1
结点的分类:从计算机角度可分为终端结点额非终端结点;以树的特征来分可分为根结点、分支结点和叶子结点;用族谱的关系来分,可以分为双亲结点和孩子结点、祖先结点和子孙结点、兄弟结点和堂兄弟结点。
:分为结点的度树的度。结点的度指与该结点相连接的孩子结点的数目。树的度指树中所有结点度的最大值。
深度结点的深度(或称层次) 指从根开始至该结点的层数。树的深度(或高度) 指该树中结点层次最大值。
有序树和无序树:若树中结点的各颗子树是从左到右有次序的(不能互换),则为有序树,否则为无序树。
有向树和无向树:如果树的每个分支都是有方向的则为有向树,否则为无向树。
n元树:树的度为n的有向树
位置树:是一棵有向树。如果树中结点的每个孩子结点的位置是不能被改变的(改变则不是原树),则称其为位置树。
m叉树:树的度为m的有向位置树。即m元位置树
森里:是m(m>=0)颗互不相交的树的集合。对于树中的每个结点而言,其子树的集合就是森林。森林中的树也可以有顺序关系和位置关系。

树的基本操作

1->InitTree(T)——构造一颗空树T
2->ClearTree(T)——将已经存在的树T清空
3->TreeEmpty(T)——判断树T是否为空树
4->InsertChild(T,p,i,c)——在树T中插入子树c,使其成为p指向的结点的第i颗子树。
5->DeleteChile(T,p,i)——删除树T中p所指向的结点的第i颗子树
6->TraverseTree(T)——按某种次序对树T中的所有结点进行访问,每个结点仅访问一次

二叉树

一种特殊的有向树,又称二元位置树。每个结点至多有两颗子树。确切定义:二叉树或者为空、或者由一个根结点加上两颗分别称为左子树和右子树的、互不相交的二叉树组成

满二叉树

除叶子结点外的任何结点均有两个孩子结点,且所有的叶子结点都在同一层上。每一层上的结点数都是最大的。

完全二叉树

除去最底层结点后的二叉树是一棵满二叉树,且最底层结点均靠左对齐,即左边没有空隙再放入任何一个结点。
实质上满二叉树是完全二叉树的一个特例。

性质

1->在二叉树的第i(i>=1)层上至多有2^i-1个结点
2->深度为k(k>=1)的二叉树上至多有(2^k)-1个结点
3->任意一颗二叉树中,叶子结点的数目(n0)总比度为2的结点的数目(n2)多一个,即n0=n2+1。
4->具有n个结点的完全二叉树的深度为[log2 n]向下取整+1
5->有n个结点的完全二叉树,若按照从上至下、从左至右的顺序对二叉树中的所有结点从1开始顺序编号,则对于序号为i(1<=i<=n)的结点,有:(1)其双亲结点编号为[i/2] 向下取整(2)其左孩子结点的编号为2i (3)其右孩子结点的编号为2i+1
6->当结点个数为偶数时,完全二叉树中有且仅有一个度为1的结点;当结点个数为奇数,完全二叉树中没有度为1的结点。
7->完全二叉树中编号大于n/2向下取整的结点均为叶子结点

二叉树的存储

顺序存储结构

按从上至下、从左至右的顺序存储到一个线性结构(通常为数组)中。为了方便计算,需增加一些虚结点,使之变成完全二叉树的树形。
数组中下标为0的单元可用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值