更多"设二叉树根节点的层次为0,一棵高度为h的满二叉树的节点个数是 【4】 "的相关试题:
[填空题]设二叉树根结点的层次为0,一棵高度为h的满二叉树的结点个数是 【4】 。
[单项选择]假设二叉树根节点的层次为0,一棵深度(高度)为k的满二叉树和同样深度的完全二叉树各有f个节点和c个节点,下列关系式不正确的是
A. f≥c
B. c>f
C. f=2的k-1次幂减1
D. c大于2的k次幂减1
[单项选择]在一棵度为3的树中,度为3的节点个数为2,度为2的节点个数为1,则度为0的节点个数为 。
A. 4
B. 5
C. 6
D. 7
[填空题]已知一棵含有n个节点的树中,只有度为k的节点和度为0的叶子节点,则该树中含有的叶子节点个数为______。
[填空题]在树形结构中,树根节点没有______。
[填空题]一个节点的子节点个数称为该节点的 【1】 。
[简答题]【说明】
函数DeleteNode(Bitree*r,inte)的功能是:在树根节点指针为r的二叉查找(排序)树上删除键值为e的节点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树节点的类型定义为:
typedef struct Tnode{
int data;/*节点的键值*/
struct Tnode *Lchild,*Rchiid;/*指向左、右子树的指针*/
}*Bitree;
在二叉查找树上删除一个节点时,要考虑3种情况。
①若待删除的节点p是叶子节点,则直接删除该节点。
②若待删除的节点p只有一个子节点,则将这个子节点与待删除节点的父节点直接连接,然后删除节点。
③若待删除的节点p有两个子节点,则在其左子树上,用中序遍历寻找关键值最大的节点 s,用节点s的值代替节点p的值,然后删除节点s,节点s必属于上述①、②情况之一。
【函数5-5】
int DeleteNode(Bitree *r,int e){
Bitree p=*r,pp,s,c;
while( (1) {/*从树根节点出发查找键值为e的节点*/
pp=p;
if(e<p->data)p=p->Lchild;
else p=p->Rehild;
}
if(!p)retrn -1;/*查找失败*/
if(p->Lchild && p->Rchild){/*处理情况③*/
s= (2) ; pp=p;
while( (3) ){pp=s;s=s->Rchild;}
p->data=s->data;p=s;
}
/* 处理情况①、②*/
if( (4) )c=p->Lchild;
else c=p->Rchild;
if(p== *r)*r=c;
else if( (5) )pp->Lchild=c;
else pp->Rchild=c;
free(p);
return 0;
}
[填空题]若按层次顺序将一棵有n个节点的完全二叉树的所有节点从1到n编号,那么当i为偶数且小于n时,节点i的右兄弟是节点 【2】 ,否则节点i没有右兄弟。
[填空题]一个节点的子节点个数称为该节点的______。
[单项选择]设森林F对应的二叉树为B,它有m个节点,B的根为p,p的右子树上的节点个数为n,森林F中第一棵树的节点个数是
A. m-n-1
B. n+1
C. m-n+1
D. m-n