为了账号安全,请及时绑定邮箱和手机立即绑定

以下内容为求二叉树函数的要求,求指教!

以下内容为求二叉树函数的要求,求指教!

幕布斯6054654 2022-03-19 15:11:27
已知某二叉树结点数据类型为整型。1。定义结点类型和结点指针类型。2。编写一个函数,实现求二叉树的叶结点数。3。编写函数,判断二叉树是否为满二叉树。用C语言编
查看完整描述

1 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

完全二叉树中,任意结点的左、右子树的深度都相等,所以你只需做一个后根遍历,即可知道一个二叉树是否为完全二叉树;

下面假设二叉树的结点结构是:

typedef struct _Node
{
_Node* lchild;
_Node* rchild;
}BinaryTree;

用VC编程,算法如下:

//检查二叉树是否完全二叉树,如果不是,返回0,
//否则返回二叉树的高度
int checkCompleteBinaryTree(BinaryTree* tree)
{
//叶子结点
if(tree->lchild==NULL && tree->rchild==NULL)return 1;
//缺一个子树,不是完全二叉树
if(tree->lchild==NULL || tree->rchild==NULL)return 0;
//左子树高度
int lheight=checkCompleteBinaryTree(tree->lchild);
//左子树不是完全二叉树
if(lheight==0)return 0;
//右子树高度
int rheight=checkCompleteBinaryTree(tree->rchild);
//右子树不是完全二叉树
if(rheight==0)return 0;
//左右子树高度不相同,因此不是完全二叉树
if(lheight!=rheight)return 0;
//返回二叉树的高度
return lheight+1;
}



查看完整回答
反对 回复 2022-03-23
  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信