本文记录了自己做的关于树的四道题目。
1 统计二叉树的叶结点个数
统计二叉树的叶结点个数
【问题描述】以二叉链表作为二叉树的存储结构, 统计二叉树的叶结点个数。
【输入形式】一行字符序列(限定大写字母为结点元素,#代表空树)。
【输出形式】数字,代表叶结点个数。
【样例输入】ABC##DE#G##F###
【样例输出】3
样例以先序遍历的顺序建立二叉链表后统计叶子结点个数。
#include<iostream>
#include<stdio.h>
using namespace std;
typedef struct bitnode
{
char data;
struct bitnode *lchild,*rchild;
}BitNode,*BitTree;
void createTree(BitTree &t)
{
char ch;
cin>>ch;
if (ch == '#')
{
t = NULL;
return;
}
else
{
t = new BitNode;
t->data = ch;
createTree(t->lchild);
createTree(t->rchild);
}
}
int traverse(BitTree t)
{
if (t == NULL)
{
return 0;
}
if (t->lchild == NULL && t->rchild == NULL)
{
return 1;
}
else
{
return traverse(t->rchild) + traverse(t->lchild);
}
}
int main()
{
//freopen("tt2.txt","r",stdin);
BitTree t;
createTree(t);
cout<<traverse(t)