注册 登录
编程论坛 数据结构与算法

数据结构二叉树

tanghf1014 发布于 2010-10-27 11:49, 739 次点击
性质1  在二叉树的第i层上最多有2的i次方减一个结点(i>=1)

性质2  深度为K的二叉树最多有2的k次方减1个结点(k>=1)

性质3  对于任意一棵二叉树BT,如果度为0的结点个数为i,度为2的结点个数为k,则i=k+1

我想请教一下大家几个问题
Ⅰ.垂直遍历与水平遍历具体有哪些区别?
Ⅱ.就以上性质来说,K叉树对于性质1、2来说又会有什么性质
Ⅲ.二叉树的遍历有那几种算法,可以写下吗?
各位拜托了
6 回复
#2
tanghf10142010-10-28 10:26
问题点击十次就是没人回复
#3
李岩2010-10-28 12:56
没看懂你到底要问什么,但二叉树遍历有先序、中序、后序、层序遍历。
#4
tanghf10142010-10-28 22:02
这是我们老师留给我们的问题,麻烦各位帮我解决下,我们不是很清楚,上课没怎么听,听了也不听不懂,关键是我C语言没学好
#5
tanghf10142010-10-29 21:57
为什么没人帮我解决这个问题
#6
tanghf10142010-10-30 09:48
啊,没人给我解决啊,难道要我自己解决吗
#7
聋眼睛瞎耳朵2010-10-30 20:06
你写的第一条性质有问题,应该是第i层最多有2的(i-1)次方个结点。

对于第一个问题:
    你说的垂直算法应该是指这三种: 
1.中序遍历    递归算法定义:   若二叉树非空,则依次执行如下操作:   (1)遍历左子树;   (2)访问根结点;   (3)遍历右子树。   
2.先序遍历    递归算法定义:   若二叉树非空,则依次执行如下操作:   (1) 访问根结点;   (2) 遍历左子树;   (3) 遍历右子树。   
3.后序遍历    递归算法定义:   若二叉树非空,则依次执行如下操作:   (1)遍历左子树;   (2)遍历右子树;   (3)访问根结点。
    而你说的水平算法应该是指 :层序遍历    二叉树的操作定义为:若二叉树为空,则退出,否则,按照树的结构,从根开始自上而下,自左而右访问每一个结点,从而实现对每一个结点的遍历。    根据定义,应该就可以知道两者的区别了吧!

对于第二个问题:
    如果把你写的二叉树的三条性质搞清楚的话,就可以类推了!如果是K叉树的话,那么第二层最多有K个结点,第三层最多有k的平方个结点,类推的话,那么第i层最多有k的(i-1)个结点。    深度为M的K叉树的话,最多应该有1+k^1+k^2+……+k^(M-1)=(1-k^M)/(1-k)   (^这个符号表示幂运算)

对于第三个问题:
    网上有很多相关的算法,搜搜就有了!
1