计算二叉树叶子节点的数目
二叉树采用链式储存结构,设计算法计算一颗给定的二叉树中叶子节点的数目
使用递归创建并初始化二叉树。当输入的数据不为“#”时,将该元素视为一个有效的元素,否则置为null。每次递归返回当前位置的子树。
计算二叉树的所有叶子节点的数量。当一个节点的左孩子和右孩子都为空时。他是叶子节点。使用递归如果能找到就返回1,如果节点为NULL返回0,否则返回count(t->lchild)+ count(t->rchild)
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>typedef struct node{char data ;struct node * lchild;struct node * rchild;
}BiTree;BiTree * CreatTree();
int Count(BiTree * );
void Preorder(BiTree *);int main(){BiTree * top = NULL;top = CreatTree();printf("遍历结果: ");Preorder(top);putchar('\n');printf("叶子节点的个数: %d\n",Count(top));system("pause");return 0;
}BiTree * CreatTree(){BiTree *t;char ch ;ch = getchar();if (ch != '#'){t = (BiTree *)malloc(sizeof(BiTree));t ->data = ch ;t->lchild = CreatTree();t->rchild = CreatTree();}else{t=NULL;}return t;
}
int Count(BiTree * top){if(top == NULL){return 0;}else if ((top->lchild==NULL) && (top->rchild==NULL)){return 1;}else{return Count(top->lchild)+Count(top->rchild);}
}void Preorder(BiTree * top ){if(top != NULL){printf("%c ",top->data);Preorder(top->lchild);Preorder(top->rchild);}
}
计算二叉树叶子节点的数目相关推荐
- 西工大NOJ数据结构理论——016.计算二叉树叶子结点数目(耿6.14)
一.初级思路 拿到题之后的好习惯--先在纸上写思路: 1.构建二叉树: char* BinTreeBuilding(PBinTreeNode ptr_node,char *ptr_str){//创建二 ...
- java计算二叉树的节点最小值_求二叉树根节点到叶子节点路径和的最小值:遍历(递归+非递归)...
昨晚中兴笔试题,第一题是给定二叉树,每个节点的数据结构是 value,left,right,比较根节点到各个叶子节点路径和的大小,输出路径和的最小值.(补充:用ArrayList可以存储) 以前没做过 ...
- 求二叉树第K层的节点个数+求二叉树叶子节点的个数
size_t _FindLeafSize(Node* root) //求二叉树叶子节点的个数 { //static size_t count = 0; ...
- Pytorch 梯度计算,叶子节点,requires_grad,detach
Pytorch 梯度计算,叶子节点,requires_grad,detach 前言 梯度计算 叶子节点 张量requires_grad属性修改,detach 前言 本篇记录pytorch中梯度相关内容 ...
- C语言二叉树叶子节点的求法
C语言叶子节点的求法可以用递归来实现 1.使用递归实现叶子结点的求法 C语言中的二叉树叶子节点求法是一个比较基础的问题.在二叉树中,叶子节点是指没有子节点的节点.为了求出二叉树中的叶子节点,我们可以采 ...
- 获取二叉树叶子节点个数的递归及非递归算法
递归算法 public static<T> int numOfLeavesInRecursion(BinaryTreeNode<T> root){ // 获取二叉树叶子节点的个 ...
- 二叉树遍历算法的应用——计算二叉树的深度、计算二叉树的节点总数、计算二叉树的叶子节点数(均采用递归的思想)
//二叉树遍历算法的应用 //1.计算二叉树的深度 int Depth(BitTree T){if(T==NULL)return 0;//如果是空树,返回0else{m=Depth(T->lch ...
- 数据结构,计算二叉树叶子结点数 C语言实现
树的存储结构 typedef struct BiTNode {char data;struct BiTNode* lchild, * rchild; }BiTNode, * BiTree; 代码实现 ...
- 二叉树叶子节点迭代器
开始的想法是先将叶子节点放入到一个vector中,然后依次next 下面的解法类似,但是只有在Next操作时才寻找下一个叶子节点 template <typename T> class I ...
最新文章
- [Asp.net 5] Options-配置文件(2)
- 未经任何测试的源代码开放
- python爬取网易云音乐_Python 从零开始爬虫(七)——实战:网易云音乐评论爬取(附加密算法)...
- 查看安卓keystore别名
- 51NOD 1125(交换机器最小代价) (贪心) 思想 !思想!
- JAVA面试——计算机网络
- 【学习笔记】第二章——信号量机制 用信号量实现互斥、同步
- 元组可以直接添加进数据库吗_数据库篇-第一章:数据库基本概念
- bzoj4448 [Scoi2015]情报传递
- 地址栏引用PHP中变量,PHP 读取地址栏 参数
- .net core websocket
- C++中的向量vector
- unity下载官网地址
- ramda 函数 String
- gitlab hook declined错误
- JS获取手机型号和系统类型
- PQ分区出错,由Ghost来补救的办法(转)
- 欢迎你、某某某同学python_python123第一周作业
- V831——AprilTag标签识别
- 67. Add Binary 二进制加法leetcode