打印

算法分享之二叉树

[复制链接]
1004|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vivilzb1985|  楼主 | 2014-4-28 22:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
vivilzb1985|  楼主 | 2014-4-28 22:41 | 只看该作者
首先是树的概念介绍的——树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。

使用特权

评论回复
板凳
vivilzb1985|  楼主 | 2014-4-28 22:41 | 只看该作者
在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。

使用特权

评论回复
地板
vivilzb1985|  楼主 | 2014-4-28 22:42 | 只看该作者
二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:
  (1)空二叉树;
  (2)只有一个根结点的二叉树;
  (3)只有左子树;
  (4)只有右子树;
  (5)完全二叉树
  注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形。

使用特权

评论回复
5
vivilzb1985|  楼主 | 2014-4-28 22:43 | 只看该作者
二叉树的基本概念参数概念的啊
(1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。 
(2)满二叉树——除了叶结点外每一个结点都有左右子叶且叶结点都处在最底层的二叉树,。
(3)深度——二叉树的层数,就是高度。

使用特权

评论回复
6
vivilzb1985|  楼主 | 2014-4-28 22:44 | 只看该作者
(1) 在二叉树中,第i层的结点总数不超过2^(i-1);
(2) 深度为h的二叉树最多有2^h-1个结点(h>=1),最少有h个结点;
(3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;
(4) 具有n个结点的完全二叉树的深度为int(log2(n+1))

使用特权

评论回复
7
vivilzb1985|  楼主 | 2014-4-28 22:44 | 只看该作者
(5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:
  若I为结点编号则 如果I<>1,则其父结点的编号为I/2;
  如果2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子;
  如果2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右儿子。
  (6)给定N个节点,能构成h(N)种不同的二叉树。
  h(N)为卡特兰数的第N项。h(n)=C(n,2*n)/(n+1)。
  (7)设有i个枝点,I为所有枝点的道路长度总和,J为叶的道路长度总和J=I+2i

使用特权

评论回复
8
vivilzb1985|  楼主 | 2014-4-28 22:45 | 只看该作者
二叉树遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。

使用特权

评论回复
9
vivilzb1985|  楼主 | 2014-4-28 22:46 | 只看该作者
设L、D、R分别表示遍历左子树、访问根结点和遍历右子树, 则对一棵二叉树的遍历有三种情况:DLR(称为先根次序遍历),LDR(称为中根次序遍历),LRD (称为后根次序遍历)。

使用特权

评论回复
10
shenmu2012| | 2014-5-15 23:03 | 只看该作者
二叉树算法在大数据量处理中用处非常多的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:后来乍到,前辈们多多包涵了啊。。

88

主题

4276

帖子

6

粉丝