社区
VB基础类
帖子详情
谁能给我讲讲二叉树我就给谁分,欢迎讨论
Maxing
2005-06-14 09:24:35
最近看了篇文章,里面有个二叉树的数据结构,想具体了解一下这个方面的内容,包括二叉树结构的优点,如何设计等等都可以。欢迎讨论,2周结贴
...全文
138
7
打赏
收藏
谁能给我讲讲二叉树我就给谁分,欢迎讨论
最近看了篇文章,里面有个二叉树的数据结构,想具体了解一下这个方面的内容,包括二叉树结构的优点,如何设计等等都可以。欢迎讨论,2周结贴
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zjlang
2005-06-15
打赏
举报
回复
怎么搞起数据结构啦?
Maxing
2005-06-15
打赏
举报
回复
树结构在日常是很常见的一种结构,比如族谱。而二叉树又是树的扩展,是最最基本的树结构,也是在算法设计中用的最多的一种。但是,这个结构到底有什么优点?具体在哪里使用?有没有经典的实例呢?麻烦大虾指点
还想懒够
2005-06-15
打赏
举报
回复
知道是怎么回事,但不知道哪里用过。
DawnPine
2005-06-15
打赏
举报
回复
想了解相关理论可以找本离散数学看看
想了解算法及应用可以找本数据结构看看或者找数据结构的习题做做
会让你加深理解
cxianfa
2005-06-14
打赏
举报
回复
上面介绍的很清楚,但是真正的应用它到什么具体的的方还没有过。
DooDu
2005-06-14
打赏
举报
回复
二叉树:
它是结点的有限集合,这个集合或者为空集
或者由一个根及两棵不相交的分别称作这个根
的“左子树”和“右子树”的二叉树组成。
它的每一个结点至多有两棵子树,并且子树
有左右之分,不能随意颠倒。
二叉树不是树的特殊情形,它们是两个概念。
树和二叉树之间最主要的差别是:二叉树中结点的子树要区分为左子树和右子树,即使在结点只有一棵子树的情况下也要明确指出该子树是左子树还是右子树。
满二叉树:如果一棵二叉树的任何结点或者是树叶,或者有两棵非空子树,则此二叉树称作“满二叉树”。
完全二叉树:如果一棵二叉树至多只有最下面的两层结点度数可以小于2,并且最下面一层的结点都集中在该层最左边的若干位置上,则此二叉树称为“完全二叉树”。完全二叉树不一定是满二叉树。
扩充二叉树 :
把原二叉树的结点都变为度数为2的分支结点,也就是说,如果原结点的度数为2,则不变,度数为1,则增加一个分支,度数为0(树叶)增加两个分支。
在扩充的二叉树里,新增加的外部结点的个数比原来的内部结点个数多1。
“外部路径长度”E:在扩充的二叉树里从根到每个外部结点的路径长度之和。
“内部路径长度”I:在扩充的二叉树里从根到每个内部结点的路径长度之和。
E = I + 2n
其中,n是内部结点的个数。
二叉树的性质
性质1. 在非空二叉树的第i层上至多有2i个结点
归纳: i=0, 结点数=1=20 .
假设对于j(0j i), 结点数至多有2j .
对于i=j+1, 结点数至多为 2* 2j=2j+1 .
性质2. 深度为k的二叉树至多有2k+1-1个结点
性质3. 对任何一棵非空二叉树T,如果叶结点数 为n0,
度为2的结点数为n2,则n0=n2+1。
性质4. 具有n个结点的完全二叉树的深度k为log2n .
二叉树的基本运算
创建一棵空二叉树;
判断某棵二叉树是否为空;
求二叉树的根结点,若为空,则返回一特殊值;
求二叉树中某个指定结点的父结点,当指定结点为根时,返回一特殊值;
求二叉树中某个指定结点的左子女结点,当指定结点没有左子女时,返回一特殊值;
求二叉树中某个指定结点的右子女结点,当指定结点没有右子女时,返回一特殊值;
二叉树的周游。
二叉树的周游(Traversing Binary Tree):
按某条搜索路径访问二叉树中的所有结点 ,使得每个结点被访问一次且仅被访问一次。
三种方式:
先根次序 (DLR)
对称序 (LDR)
后根次序 (LRD)
一。递归算法
先根次序
中根次序
后根次序
二。 非递归算法 (用自定义的栈来代替系统的栈)
先根次序
中根次序
后根次序 1 2
TechnoFantasy
2005-06-14
打赏
举报
回复
二叉树的类:
http://www.vbzx.net/ArticleView/vbzx_Article_View_665.asp
《数据结构与算法》(十)-
二叉树
详解
目录1.
二叉树
简介1.1
二叉树
的定义1.2
二叉树
的特点1.2 特殊
二叉树
2.
二叉树
的性质2.1
二叉树
的性质12.2
二叉树
的性质22.3
二叉树
的性质32.4
二叉树
的性质42.5
二叉树
的性质53.
二叉树
的存储结构3.1
二叉树
顺序存储结构 1.
二叉树
简介 1.1
二叉树
的定义 现在我们来做个游戏,我在纸上已经写好了一个 100 以内的正整数数字,请大家想办法猜出我写的是哪一个?注意你们猜的数字不能超过 7 个,我的回答只会告诉你是 “大了” 或 “小了”。 这个游戏在一些电视节目中
C++实现树 - 07 平衡
二叉树
写在前面: 这一讲我们来
讲讲
目前为止难度最大的一种树,当然后面要有 B 树、B+ 树和红黑树等着我们。同样,我会将详细的代码附到详解的最后。 平衡
二叉树
的定义 我们之前学了二叉排序树,但是二叉排序树存在一个致命的问题,如果我每次插入的值都比上一次插入的大,那它就会形成一个斜树,这对我们的查找删除等功能影响很大。 我们经过平衡操作就可以得到这样一颗树(具体如何操作下面会讲到): 所以平衡
二叉树
就由此诞生了,平衡
二叉树
定义其可以为空树,但是每个结点的左右子树的高度只差不能超过 1 ,所以就引入了一个新概.
Java实现
二叉树
的遍历
6.8 遍历
二叉树
假设,我手头有20张100元的和2000张1元的奖券,同时洒向了空中,大家比赛看谁最终捡的最多。如果是你,你会怎么做? 相信所有同学都会说, 一定先捡100元的。道理非常简单,因为捡一张100元等于1元的捡100张,效率好得不是一点点。所以可以得到这样的结论,同样是捡奖券,在有限时间内,要达到最高效率,次序非常重要。对于
二叉树
的遍历来讲,次序同样显得很重要。 二叉
二叉树
的概念以及搜索
二叉树
【建议收藏】
hello, everyone. Long time no see. 本期文章,我们主要讲解一下
二叉树
的相关概念,顺便也把搜索
二叉树
(也叫二叉排序树)讲一下。我们直接进入正题吧!GitHub源码链接 文章目录一、
二叉树
的概念二、搜索
二叉树
一、
二叉树
的概念 为什么要使用
二叉树
? 为什么要用到树呢?因为它通常结合了另外两种数据结构的优点:一种是有序数组,另一种是链表。在树中查找数据项的速度和在有序数组中查找一样快,并且插入数据项和删除数据项的速度也和链表一样。下面,我们先来稍微思考一下这些话题,然后再深
二叉树
详解
第二部
分
的思路和宽度优先遍历差不多,通过队列来实现,通过q.size()得出每一行的宽度,这个宽度还有一个作用,就是进行n次操作从而使当前行的元素全部取出,并使下一行的元素进入队列。说白了,就是在满
二叉树
的基础上,在最后一层的叶子结点上,从右往左依次删除若干个结点,所有的叶子结点都在最左边,剩下的就是一棵完全
二叉树
。在完全
二叉树
以及满
二叉树
的性质那里,我们了解到:如果从根节点出发,按照层序遍历的顺序,由1开始编号,那么父子之间的编号是可以计算出来的。其顺序是固定的,就像我们的左手和右手, 不能颠倒混淆。
VB基础类
7,785
社区成员
197,585
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章