原理
维护一个数量的变脸值,通过遍历二叉树, 对这个变量进行累加。
代码
#include <stdio.h>
#include <stdlib.h>
typedef struct BitNode {
char data;
struct BitNode *lchild, *rchild;
} BitNode, *BiTree;
int sum = 0;
void CreateBiTree(BiTree *T)
{
char ch;
scanf("%c",&ch);
if(ch=='#') {
// printf("%p\n", T);
*T=NULL;
// printf("%s\n", "11122");
}
else
{
*T=(BiTree )malloc(sizeof(BitNode));
// printf("222: %p\n", T);
if(!*T)
exit(-1);
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
void preorderTraverse(BiTree T)
{
if (T != NULL)
{
printf("%c ", T->data);
sum++;
preorderTraverse(T->lchild);
preorderTraverse(T->rchild);
}
}
int main(int argc, char const *argv[])
{
BiTree T;
//创建二叉树
CreateBiTree(&T);
preorderTraverse(T);
printf("%s:%d\n", "有多少个节点", sum);
printf("\n");
return 0;
}
结果
构建树模型:
截图: