文章目录

  • 思路
  • Java 实现

思路

思路这一块没啥可说,递归主要是求左子树叶子结点数+求右子树叶子结点数,递归实现。非递归就是用到了栈,一个结点一个结点的保存,保存到叶子结点时候,就让叶子出栈,计数+1,然后让栈顶指向右结点再入栈循环执行即可

Java 实现

// 结点
class Node {int data;Node left = null;Node right = null;
}// 二叉树
public class BinaryTree {// 根结点private Node root;// 输入的数组private int[] arr_in;// 输出的数组private int[] arr_out;// 记录数组下标private static int index;// 得到二叉树叶子结点的个数(递归)public int getLeafCountRecursion(Node r) {if (r.left == null && r.right == null)return 1;elsereturn getLeafCountRecursion(r.left) + getLeafCountRecursion(r.right);}// 得到二叉树叶子结点的个数(非递归)public int getLeafCount(Node r) {Stack stack = new Stack();Node node = r;int count = 0;while (node || !stack.empty()) {if (node) {if (node.left != null || node.right != null) {// 只存中间结点,不存叶子结点stack.push(node);node = node.left;}else {count++;node = stack.pop().right;}}else {if (stack.peek().right)node = stack.pop().right;else {stack.pop();node = stack.pop().right;}}        }}

数据结构-二叉树(求二叉树叶子节点数的递归和非递归算法)相关推荐

  1. 获取二叉树叶子节点个数的递归及非递归算法

    递归算法 public static<T> int numOfLeavesInRecursion(BinaryTreeNode<T> root){ // 获取二叉树叶子节点的个 ...

  2. 数据结构之求二叉树的所有叶子和以及叶子总数

    1.题目 数据结构之求二叉树的所有叶子和以及叶子总数         2.代码实现 tree.java package leetcode.chenyu.test;public class Tree { ...

  3. c#二叉树 取叶子节点个数_两种类似但是原理不同的算法求二叉树的所有叶子节点和...

    技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后到中级难度,最后到hard难度全部完. 目前我选择C语言,Python和Java作为实现语言,因为这三种 ...

  4. c语言输出度为1 的节点,计算机国家二级考试中的度为1和度为2是什么意思?老师说:总结点=叶子节点数+度为1+度为2,都是什么意思?...

    度是一个计算机的单位,度为1就说明该节点的个数为1,度为2就说明该节点的个数为2. 而度为0的结点叫叶子结点,由二叉树的性质可以知道在二叉树中叶子结点总是比度为2的结点多一个,故总结点=叶子节点数+度 ...

  5. 数据结构二叉树中序遍历递归和非递归算法

    2022.11.19 二叉树中序遍历递归和非递归算法 任务描述 相关知识 编程要求 测试说明 C/C++代码 任务描述 本关任务:给定一棵二叉树,使用递归和非递归的方法实现二叉树的中序遍历结果. 相关 ...

  6. 二叉树的三种遍历方式(递归、非递归和Morris遍历)

    二叉树的三种遍历方式(递归.非递归和Morris遍历) 原文:http://www.linuxidc.com/Linux/2015-08/122480.htm 二叉树遍历是二叉树的最基本的操作,其实现 ...

  7. 斐波那契数与二分法的递归与非递归算法及其复杂度分析

    1. 什么是斐波那契数? 这里我借用百度百科上的解释:斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏 ...

  8. 数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)

    假设二叉数的数据元素为字符,采用二叉链式存储结构.请编码实现二叉树ADT,其中包括创建二叉树.遍历二叉树(深度.广度).求二叉树的深度(高度).计算二叉树的元素个数.计算二叉树的叶子数.二叉树的格式输 ...

  9. 二叉树 求叶子节点数并返回叶子节点个数

    编程实现:求二叉树的叶子结点的个数,并打印输出所有叶子结点. 需要先构造一个二叉树,再对二叉树进行遍历,遍历到叶子节点就输出和个数+1 二叉树的结点类: package com.alibaba.str ...

  10. 二叉树遍历算法的应用——计算二叉树的深度、计算二叉树的节点总数、计算二叉树的叶子节点数(均采用递归的思想)

    //二叉树遍历算法的应用 //1.计算二叉树的深度 int Depth(BitTree T){if(T==NULL)return 0;//如果是空树,返回0else{m=Depth(T->lch ...

最新文章

  1. 如何高效推进ML模型开发和部署?Uber机器学习平台Michelangelo实践
  2. 一键分享(系统所有的软件的分享功能)
  3. 全球及中国医养结合产业发展战略建议与投资价值评估报告2022版
  4. 玩转MySQL之Linux下的简单操作(服务启动与关闭、启动与关闭、查看版本)
  5. 基于Salmon的转录组批量定量流程和差异分析
  6. Codeforces Round #467 (Div. 1): B. Sleepy Game(BFS+有向图判环)
  7. ubuntu下的snappy安装配置以及测试
  8. php期末考卷,php试卷B高质量含答案
  9. win10运行python文件_Python如何运行py文件?
  10. SQL Server新增字段并添加描述
  11. 计算机二级 MSOffice 考试历年真题精选
  12. excel随机数_【收藏】Excel生成随机数、不重复随机数技巧,试验检测办公必备...
  13. Android开放root权限
  14. 了解过什么是 DDD吗?一文带你掌握!(至尊典藏版)
  15. CMDN Club #20 活动预告: 从粉笔网多终端产品快速开发说开去——移动创业产品的架构和项目管理(10月10日)...
  16. 国产折叠屏手机:华为领航,跟随者众
  17. 服务网关 Zuul基本使用
  18. 【硬件】美光DDR上丝印和型号对应关系
  19. 《赢在中国-蓝天碧水间》观后感
  20. 任何播放器无法播放视频

热门文章

  1. H7-TOOL发布固件V2.12,正式发布脱机烧录1拖16支持,脱机烧录增加NXP的MKL系列支持,更新串口助手,CAN助手等(2022-01-09)
  2. vs2013下载地址以及安装方法
  3. 使用C#将RGB24转换为YUV420格式
  4. 机器学习的一些常识(联合概率分布、模型种类、生成方法与判别方法)
  5. Python 并口(LPT)打印
  6. 软件工程能调剂到计算机么,愿意调剂到计算机专业或软件工程专业
  7. 电脑硬盘为什么要分区
  8. 通达OA2017版工作流触发器应用实例
  9. python 中文转换 url 编码
  10. php转换编码%e4,常见编码之间的转换