树和二叉树(概念 结构)

树的概念和结构

  树的概念

树是非线性的数据结构,他是由N个(N>=0)节点组成的一个具有层次关系的集合:

图中表示的都是树。

有一个特殊的结点,称为根结点,根节点没有前驱结点,其余结点被分成M(M>0)个互不相交的集合


节点的度:
叶子节点:

分支节点(非终端节点):

父亲节点:

子节点(孩子节点):

兄弟节点:

树的度:

节点的层次:

树的高度(深度):

节点的祖先(祖先节点):

树的结构

树的结构比较线性表的结构复杂很多,要存储链接起来特别麻烦,要保证数据的存储,也要保证每个结点与结点之间的关系。表示的方法很多,我最了解的也是最简单的方法就是,孩子兄弟表示法。

定义结构:

tupedef int TreeDataType;
struct treenode
{
    struct treenode* child;  //链接孩子节点
    struct treenode* brother;//链接兄弟节点
    TreeDataType data;
}; 

最常见的运用场景就是文件系统的目录树结构

二叉树的概念和结构

二叉树的概念

二叉树是节点一个有限集合,

二叉树的所有节点度不大于2,

二叉树的子树有左右之分,次序不能颠倒,因此二叉树也是有序树

可以为空,也可以是由一个根节点加上两颗左子树和右子树的二叉树组成的。

特殊的二叉树

满二叉树:一个二叉树,每一层的节点都是最大值,那这个二叉树就是满二叉树,满二叉树的节点是2^k-1(K是这颗二叉树的层数)。

完全二叉树:完全二叉树就是满二叉树为满情况下的,需要注意的是每个节点都与深度为K的满二叉树中编号从1至N的节点一一对应。

二叉树的性质

一颗非空的二叉树第i层上最多有2^(i-1)个节点(第一层为1的话)。如果第一层为0,则第i层最多有2^i个节点;

二叉树深度为h的树,最多节点数为2^h - 1(第一层为1) 

度为0的节点就是叶子节点,我们称为n0,度为2的节点就是分支节点为n2,度为1的节点为n1,

则叶子节点的个数为 n0 = n2 + 1;

根据观察可以看出n0永远比n2多一个, n1为1或者0;

 

根节点第一层为1, n个节点的满二叉树的深度为多少, h = log(n+1);(以2为底的logn)

二叉树的储存结构

二叉树一般可以使用两种结构储存,顺序结构和链式结构。

顺序结构:

链式结构:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值