C语言二叉树字符统计,C语言二叉树创建、遍历以及统计结点、叶子结点

叶子结点是指左右子结点都是NULL的结点。编程的精髓在于递归调用。

#include

typedef int DataType;

typedef struct tree

{

DataType data;

struct tree *left;

struct tree *right;

}node,*pnode;

pnode createTreeNode(DataType data)

{

pnode n=(pnode)malloc(sizeof(node));

n->data = data;

n->left = NULL;

n->right = NULL;

return n;

}

void treeTravel(pnode p)

{

if (NULL == p)

{

return;

}

treeTravel(p->left);

printf("%d ", p->data);

treeTravel(p->right);

}

int countNode(pnode p)

{

if(p){

return(countNode(p->left) + countNode(p->right) + 1);

}

return 0;

}

int countLeafNode(pnode p)

{

if(p){

if((p->left == NULL) && (p->right == NULL))return 1;

return(countLeafNode(p->left) + countLeafNode(p->right));

}

return 0;

}

/*

7 1 5 6 2 9 4 8 6

7

1 9

5 8

3 6

2 4

*/

void main()

{

pnode root=NULL;

int NodeNumber = 0;

int leafNodeNumber = 0;

pnode p1=NULL, p2=NULL, p3=NULL, p4=NULL, p5=NULL, p6=NULL, p7=NULL,p8=NULL,p9=NULL;

p1 = createTreeNode(7);

p2 = createTreeNode(1);

p3 = createTreeNode(9);

p4 = createTreeNode(5);

p5 = createTreeNode(8);

p6 = createTreeNode(3);

p7 = createTreeNode(6);

p8 = createTreeNode(2);

p9 = createTreeNode(4);

p1->left = p2;

p1->right = p3;

p2->right = p4;

p3->left = p5;

p4->left = p6;

p4->right = p7;

p6->left = p8;

p6->right = p9;

root = p1;

treeTravel(root);

NodeNumber = countNode(root);

leafNodeNumber = countLeafNode(root);

printf("\n");

printf("node number = %d\n", NodeNumber);

printf("leaf node number = %d\n", leafNodeNumber);

getchar();

}

-bash-3.2$ ./binTree

1  2  3  4  5  6  7  8  9

node number = 9

leaf node number = 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值