数据结构——初学树

树的简介

树是一种非线性数据结构。由n(n>=0)个节点构成,第一个节点称为根节点。树是由根节点(唯一)+子树(m >= 0)组成且子树之间互不相交。
特点:元素间称为“一对多”关系,呈现分支、分层的形态。 最简单和常用的是二叉树。

树的基本概念

右边的树中A为根节点B、C、D为A的孩子,A为他们的父亲。B、C、D之间为兄弟。把以B、C、D为根节点的数称为子树。

森林:
m(m>=0)棵互不相交的树的集合。

任何一棵非空树可表示为一个二元组
Tree = (root,F)
在这里插入图片描述

二叉树

二叉树的递归定义:二叉树要么为空,要么由根节点(root)、左子树(left subtree)、右子树(right subtree)组成,而左子树和右子树分别是一颗二叉树。

在这里插入图片描述
二叉树的特点:

1.每个结点至多只有两棵子树 。
2.子树有左右之分,其次序不能任意颠倒,只有一棵子树时也必须分清左右子树 。
3.子树必须是二叉树。
在这里插入图片描述
二叉树的性质
性质1:
二叉树的第i层上至多有2^(i-1)个结点(i ≥ 1)。
性质2 :
深度为 k 的二叉树上至多含 2^k-1 个结点(k ≥ 1)。由等比数列求和公式得到(1 - 2^k) / (1-2) = 2^k-1。

满二叉树:深度为k且有2^k-1个结点的二叉树。
如图就是个4层满二叉树,必须符合这样的编号方式。
在这里插入图片描述
完全二叉树
深度为k,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树编号从1到n的结点一一对应时,称为完全二叉树。就是说与满二叉树编号方式相同但是从右边可以有空子树。

在这里插入图片描述
性质3 :
具有 n 个结点的完全二叉树的深度为【log2n】 +1 。【】是取整。
证明:设完全二叉树的深度为 k
则根据第二条性质得 2^k-1≤ n < 2^k
即 k-1 ≤ log2 n < k
因为 k 只能是整数,因此,k =【log2n】 + 1 。
性质4 :
若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为 i 的结点:
(1) 若 i=1,则该结点是二叉树的根,无双亲,
否则,编号为 【i/2】 的结点为其双亲结点;
(2) 若 2i>n,则该结点无左孩子, 否则,编号为 2i 的结点为其左孩子结点;
(3) 若 2i+1>n,则该结点无右孩子结点, 否则,编号为2i+1 的结点为其右孩子结点。

二叉树的存储
1.顺序存储
2.链式存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜康o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值