数据结构拓展习题:正则二叉树
题目:试证明:正则二叉树(每个非叶子结点都有左子树和右子树,正则二叉树)只有奇数个结点,偶数条边。设计算法,判定一棵二叉树是否为正则二叉树。


typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
bool IsRegularTree(BiTree T)
{
if (T == NULL)//如果T为空树,则其为正则二叉树
return TRUE;
else if (T->lchild == NULL && T->rchild == NULL)//如果左右节点都空也是
return TRUE;
else if (T->lchild != NULL && T->rchild != NULL)//如果左右节点均不空
if (IsRegularTree(T->lchild)&& IsRegularTree(T->rchild))//判断其左右子树是否为正则二叉树
return TRUE;
else
return FALSE;
else//如果一颗子树非空另一颗空则不是正则二叉树
return FALSE;
}