已知某二叉树结点数据类型为整型。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;
}
添加回答
举报
0/150
提交
取消