急急~判断一棵二叉树是满二叉树的算法!
我的思路是利用满二叉树的性质来判断。满二叉树一定符合 节点数 = 2的n次方 -1 (n为深度)
所以可以先遍历二叉树,并记录深度和节点数,最后做出判断
#include
void inorder(bintree *t,int currentDeep)
{
if(*t!=NULL)
{
if(currentDeep>deep) deep=currentDeep;
/* 如果当前深度大于记录的深度,则更新深度 */
countNodes ; /* 节点数加一 */
inorder(t->lchild,currentDeep 1);
/* 访问当前节点的左孩子,并把当前节点的深度 1传给调用函数 */
inorder(t->rchild,currentDeep 1);
/* 访问当前节点的右孩子,并把当前节点的深度 1传给调用函数 */
}
}
main()
{
/* p 为二叉树的根节点,其定义略 */
int currentDeep=1; /* currentDeep用于记录当前深度
static int deep=0; /* 静态变量deep用于记录已检索的最大深度 */
static int countNodes=0;
/* 静态变量countNodes用于记录已检索的节点数目 */
inorder(p,currentDeep);
/* 中序遍历二叉树从而得到二叉树的深度以及节点数目 */
if(countNodes<(pow(2,deep)-1)) printf("这不是一棵满二叉树。
");
else printf("这是一棵满二叉树。
");
/* 利用满二叉树的节点数一定等于2的深度次方减1做出判断 */
/* pow函数的作用是求2的deep次方 */
camb_yang 同学满二叉树为什么就不用判断呢?。
答:详情>>
问:请问这几味中药可以一起喝吗?当归、熟地、川芎、炒芍、党参、茯苓、白?X、炙甘草各...
答:名八珍汤。 功效:补气养血。 属于气血双补之剂,应该辩证使用,主治气血双亏。常用于慢性病恢复期。 是否可以丰胸,本人无此经验。但从方剂组成看,如果是气血两亏所致...详情>>
答:家庭教育女儿在小的时候很会自得其乐,我陪着她去走路、捡石头、看小花、观察昆虫、浇花、拔草……她从小听音乐详情>>