NOJ数据结构016——计算二叉树叶子结点数目

矫情吗;* 2023-01-16 04:49 224阅读 0赞

在这里插入图片描述
叶子结点就是无后继的结点,搞清楚这点我们就可以根据上一题的经验轻松写出本题。

代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct Node
  4. {
  5. char data;
  6. struct Node *LChild;
  7. struct Node *RChild;
  8. }BiTNode, *BiTree;
  9. void CreateBinTree(BiTree *T); //创建二叉树
  10. int Getleaf(BiTree T); //计算二叉树结点
  11. int main()
  12. {
  13. int leaf;
  14. BiTree T;
  15. CreateBinTree(&T);
  16. leaf = Getleaf(T);
  17. printf("%d", leaf);
  18. return 0;
  19. }
  20. void CreateBinTree(BiTree *T)
  21. {
  22. //创建二叉树
  23. char c;
  24. c = getchar();
  25. if (c == '#') {
  26. *T = NULL;
  27. return;
  28. }
  29. *T = (BiTree) malloc (sizeof(BiTNode));
  30. (*T)->data = c;
  31. CreateBinTree(&((*T)->LChild));
  32. CreateBinTree(&((*T)->RChild));
  33. }
  34. int Getleaf(BiTree T)
  35. {
  36. //计算二叉树结点
  37. int LLeaf = 0, RLeaf = 0;
  38. if(T==NULL) return 0;
  39. if (T->LChild == NULL && T->RChild == NULL)
  40. return 1;
  41. if (T->LChild)
  42. LLeaf = Getleaf(T->LChild);
  43. if (T->RChild)
  44. RLeaf = Getleaf(T->RChild);
  45. return LLeaf+RLeaf;
  46. }

发表评论

表情:
评论列表 (有 0 条评论,224人围观)

还没有评论,来说两句吧...

相关阅读

    相关 叶子计数

    一、 问题描述 实现输入二叉树,输出叶子结点个数。 二、 数据结构设计 由于输入的二叉树是字符串形式,首先需要由输入的标明空子树的先根遍历序列创建一棵二叉树,创建二叉