| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4122 人关注过本帖
标题:判断链式二叉树是否为完全二叉树
只看楼主 加入收藏
psso_2007
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-10-23
收藏
 问题点数:0 回复次数:14 
判断链式二叉树是否为完全二叉树
如何判断链式二叉树是否为完全二叉树,谁给个算法
最好部分主要的代码
谢了
搜索更多相关主题的帖子: 二叉树 链式 判断 
2008-10-23 22:49
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
数据规模多大?如果规模小的话就转换为静态存储就好判断了。

我想完全二叉树应该是可以递归定义的吧比如BT是完全二叉树当且仅当BT的左子树和右子树都是完全二叉树并且左右子树的高度差要么为1要么为0。我不确定,瞎说的。
2008-10-23 22:58
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
刚前不久讨论过这个话题啊,找找吧。

倚天照海花无数,流水高山心自知。
2008-10-24 07:50
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
回复 2# multiple1902 的帖子
我也想过完全二叉树是否可以递归定义,但后来觉得可能不好递归定义,
举个例子吧,譬如:
     A
    / \
   B   C
  /   /
 D   E
A的左右子树也都是完全二叉树,但整个却不是,可能还需要其他的限制才可以吧,
我也不懂了,随便说说呵...
2008-10-24 10:58
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
[bo][un]geninsf009[/un] 在 2008-10-24 10:58 的发言:[/bo]

我也想过完全二叉树是否可以递归定义,但后来觉得可能不好递归定义,
举个例子吧,譬如:
     A
    / \
   B   C
  /   /
 D   E
A的左右子树也都是完全二叉树,但整个却不是,可能还需要其他的限制才可以吧 ...

呃 改一下
那就满二叉树吧。
2008-10-24 12:47
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
[bo][un]geninsf009[/un] 在 2008-10-24 10:58 的发言:[/bo]

我也想过完全二叉树是否可以递归定义,但后来觉得可能不好递归定义,
举个例子吧,譬如:
     A
    / \
   B   C
  /   /
 D   E
A的左右子树也都是完全二叉树,但整个却不是,可能还需要其他的限制才可以吧 ...

完全二叉树用递归判断不出来的,试用层次遍历。

倚天照海花无数,流水高山心自知。
2008-10-24 13:07
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
[bo][un]nuciewth[/un] 在 2008-10-24 13:07 的发言:[/bo]


完全二叉树用递归判断不出来的,试用层次遍历。

那如果加一个函数是判断满二叉树的呢?层次遍历我担心他数据规模太大,不过从算法上来说应该是可行的。
2008-10-24 13:07
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
是否符合递归只要看下它的定义就知道了。
满二叉树就是说根结点的左右子树都存在。所以它能递归判断。

倚天照海花无数,流水高山心自知。
2008-10-24 13:10
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
不过就我个人觉得,如果是处理完全二叉树的情况,已经没有必要通过链式存储来实现了,
我甚至觉得完全二叉树属于线性结构,而没有必要把它列入非线性结构,所有的元素之间
只有一些标号的对应关系,例如如果下标从0开始的情况,标号为i的结点的左右子结点标号
分别为2*i+1和2*i+2,其父结点的标号为int(i/2)等,例如堆这个数据结构,也是完全二叉
树,但其本质仍然是队列,属于线性结构的一种,一家之言了,大家多指教...
2008-10-24 13:27
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
[bo][un]geninsf009[/un] 在 2008-10-24 13:27 的发言:[/bo]

不过就我个人觉得,如果是处理完全二叉树的情况,已经没有必要通过链式存储来实现了,
我甚至觉得完全二叉树属于线性结构,而没有必要把它列入非线性结构,所有的元素之间
只有一些标号的对应关系,例如如果下标从 ...

本质是队列?

我这么想的,完全二叉树是一种非线性(一个前驱,两个后继)的数据结构,但是可以对应于一个线性表。如果数据规模小,直接弄成线性表然后判断当然是可以的……而且时间复杂度不会太大,就怕数据规模大的情况。

图可以有最小生成树,生成树可以恢复成原来的图,这也是对应关系,为什么不说图的本质是树?
2008-10-24 13:31
快速回复:判断链式二叉树是否为完全二叉树
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018720 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved