二叉树 求叶子节点数并返回叶子节点个数
编程实现:求二叉树的叶子结点的个数,并打印输出所有叶子结点。
需要先构造一个二叉树,再对二叉树进行遍历,遍历到叶子节点就输出和个数+1
二叉树的结点类:
package com.alibaba.structure.school.two;// 节点类
public class BinaryNode<T> {public T data;public BinaryNode<T> left,right;// 构造节点public BinaryNode(T data,BinaryNode<T> left,BinaryNode<T> right){this.data = data;this.left = left;this.right = right;}public BinaryNode(T data){this(data,null,null); // this构造方法}public String toString(){ // 返回节点数据域的描述字符串return this.data.toString();}public boolean isLeaf(){return this.left == null && this.right == null;}}
二叉树类:
package com.alibaba.structure.school.two;// 二叉树类
public class BinaryTree<T> {public BinaryNode<T> root; // 根节点public boolean isEmpty() { // 判断二叉树是否为空return this.root == null;}public BinaryTree(T[] prelist) { // 初始的时候构造二叉树this.root = create(prelist);}private int i = 0;private BinaryNode<T> create(T[] prelist) { // {"A","B","D",null,"G",null,null,null,"C","E",null,null,"F","H"};BinaryNode<T> p = null;if (i < prelist.length) {T elem = prelist[i];i++;if (elem != null) {p = new BinaryNode<T>(elem);p.left = create(prelist);p.right = create(prelist);}}return p;}int sum = 0;public void preorder(){ // 孩子节点优先遍历 ( 先根 )int sum = preorder(this.root);System.out.println("叶子节点总数为:" + sum);}private int preorder(BinaryNode<T> p){if(p != null){if(p.isLeaf()){sum +=1;System.out.println(p.data.toString() + " ");}preorder(p.left);preorder(p.right);}return sum;}public String toString() {return toString(this.root);}private String toString(BinaryNode<T> p) { // ^ : 表示空if (p == null)return "^" + " ";return p.data.toString() + " " + toString(p.left) + toString(p.right);}
}
Main方法:
package com.alibaba.structure.school.two;// 求叶子节点的个数,并且打印输出叶子节点
public class Main {public static void main(String[] args) {/*A/ \B C/ \ / \D ^ E F/ \ / \ / \^ G ^ ^ H ^/ \ / \^ ^ ^ ^*/
// String [] prelist = {};
// String [] prelist = {"A"};String [] prelist = {"A","B","D",null,"G",null,null,null,"C","E",null,null,"F","H"};BinaryTree<String> bitree = new BinaryTree<>(prelist);System.out.println("前序遍历:" + bitree.toString()); // 中 左 右bitree.preorder(); // 返回叶子结点和总和}
}
二叉树 求叶子节点数并返回叶子节点个数相关推荐
- 数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)
假设二叉数的数据元素为字符,采用二叉链式存储结构.请编码实现二叉树ADT,其中包括创建二叉树.遍历二叉树(深度.广度).求二叉树的深度(高度).计算二叉树的元素个数.计算二叉树的叶子数.二叉树的格式输 ...
- 设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树。假如一棵这样的二叉树中有m(m0)个叶子结点,那么该二叉树上的结点总数为( )。
设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树.假如一棵这样的二叉树中有m(m>0)个叶子结点,那么该二叉树上的结点总数为( ). 正确答案: B 你的答案: B (正确) ...
- 神经网络隐藏层节点数效率最优值
本文通过调节神经网络隐藏层节点数观察隐藏层节点数对神经网络性能的影响,并通过实验找到隐藏层节点数的收敛效率最优值. 首先构造一个二分类网络区分minst数据集的0和2,实验将28*28的图片缩小到9* ...
- 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)
7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...
- 计算二叉树的深度和叶子结点数(递归算法实现)
[问题描述] 计算二叉树的深度和叶子结点数 [输入形式] 输入二叉树的先序遍历序列建立二叉树. [输出形式] 输出二叉树的叶子结点数和深度. [样例输入] A B C # # # # [样例输出] L ...
- 叶子结点和分支节点_结点数和叶子结点数有什么区别
展开全部 结点数和叶子结点数的区别: 叶子结点是度为0的结点,简单的说就是一个二叉树任意一个分支上62616964757a686964616fe58685e5aeb931333365653931的终端 ...
- c语言输出度为1 的节点,计算机国家二级考试中的度为1和度为2是什么意思?老师说:总结点=叶子节点数+度为1+度为2,都是什么意思?...
度是一个计算机的单位,度为1就说明该节点的个数为1,度为2就说明该节点的个数为2. 而度为0的结点叫叶子结点,由二叉树的性质可以知道在二叉树中叶子结点总是比度为2的结点多一个,故总结点=叶子节点数+度 ...
- c语言二叉树结点 深度,求二叉树的深度、总结点数和叶子结点数
二叉树的二叉链表的存储结构: typedef char TElemType; typedef struct BiTNode { TElemType data;//数据元素 BiTNo ...
- 二叉树-求叶节点个数
对任何一棵二叉树:度为0的结点数(即叶节点) = 度为2的节点数 + 1: 当二叉树的总个数为奇数时,此二叉树"无度为1"的结点 当二叉树的总个数为偶数时,此二叉树"只有 ...
最新文章
- 详解何恺明团队最新作品:源于Facebook AI的RegNet
- hihoCoder 第136周 优化延迟(二分答案+手写堆)
- 用 GRUB 引导自己的操作系统
- 【十大经典数据挖掘算法】Naïve Bayes
- ASP.NET的项目怎样在WindowsServer上部署
- python显卡利用率_Linux和Windows查看当前运行的 python 进程及 GPU、磁盘利用率
- 【impala】Impala中的invalidate metadata和refresh
- 查看 php yii脚本位置,Yii框架分析(一)入口脚本index.php的启动过程剖析
- c语言 指针 排序,c – 对指针列表进行排序
- EventBus的基本使用步骤
- 【雷达通信】基于matlab雷达数字信号处理【含Matlab源码 281期】
- matlab hog函数个参数,hog算法的matlab
- 宝马 android手机同步,BMW将发布无线安卓互联系统,CarPlay终于不再一家独大!
- mac 远程连接 Windows 桌面
- mind思维导图软件
- VM虚拟机更换网络环境后无法连接网络
- altium designer 10 的AD10Crakc.zip解压后没有patch.exe
- 如何阅读一份上市公司财报 - 财报阅读入门
- 如何对PDF文档进行数字签名
- 8、Java如何制作帮助文档