1,求二叉树叶子结点的个数。
分析思想:
(1)如果这个树为空,则没有节点,结点数为0.
(2)如果这个数只有一个根节点,它的左右子树都为空,则结点数为0.
(3)如果这个数有根节点并且它的左右子树不为空,则节点数等于左子树的结点数加上右子树的结点数。
实现代码:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
typedef struct Node
{
char data;
struct Node *left;
struct Node *right;
}BiNode,*Bitree;
Bitree createBtree()
{
Bitree T;
char c;
scanf("%s", &c);
if (c == '#')
T = NULL;
else
{
T = new BiNode;
T->data = c;
T->left = createBtree();
T->right = createBtree();
}
return T;
}
void Order(Bitree T)
{
if (T)
{
printf("%c\n", T->data);
Order(T->left);
Order(T->right);
}
}
int leftnum(Bitree T)
{
if (T == NULL)
{
return 0;
}
if (T->left == NULL&&T->right == NU