//
//  binary_tree.cpp
//  BinaryTreeApp
//
//  Created by ljpc on 2018/5/3.
//  Copyright © 2018年 ljpc. All rights reserved.
//#include "binary_tree.h"int GetTreeDepth(BiTreeNode* root)
// 计算该二叉树的深度
// 参数:二叉树根节点root
// 返回:二叉树的深度
{// 请在这里补充代码,完成本关任务/********** Begin *********/int a,b;if(root==NULL){return 0;}else {a=GetTreeDepth(root->right);b=GetTreeDepth(root->left);if(a>b){return a+1;}else{return b+1;}}/********** End **********/
}int GetNodeNumber(BiTreeNode* root)
// 计算该二叉树的总节点个数
// 参数:二叉树根节点root
// 返回:二叉树的总节点个数
{// 请在这里补充代码,完成本关任务/********** Begin *********/if(root!=NULL){return GetNodeNumber(root->left)+GetNodeNumber(root->right)+1;}else{ return 0;}/********** End **********/
}int GetLeafNodeNumber(BiTreeNode* root)
// 计算该二叉树的叶子节点个数
// 参数:二叉树根节点root
// 返回:二叉树的叶子节点个数
{// 请在这里补充代码,完成本关任务/********** Begin *********/if(root==NULL){return 0;}else if(root->left==NULL&&root->right==NULL){return 1;}else{return GetLeafNodeNumber(root->left)+GetLeafNodeNumber(root->right); }/********** End **********/
}

任务描述

本关任务:给定一棵二叉树,计算该二叉树的深度、总节点个数和叶子节点个数。

相关知识

为了完成本关任务,你需要掌握:1.二叉树深度概念,2.二叉树节点,3.二叉树叶子节点概念。

二叉树深度概念

二叉树的深度指的是二叉树中最大的结点层数。例如:图1所示的二叉树最大的节点层数为3,所以该二叉树深度为3

二叉树节点

二叉树的节点包含一个数据元素及两个指向子树的分支,例如:图1所示的二叉树的总节点个数为6

二叉树叶子节点概念

叶子节点是度为0的节点,二叉树节点的度为子树的个数。例如:图1所示的二叉树叶子节点为CDF,个数为3

编程要求

本关的编程任务是补全右侧代码片段GetTreeDepthGetNodeNumberGetLeafNodeNumberBeginEnd中间的代码,具体要求如下:

  • GetTreeDepth中计算该二叉树的深度,返回深度值。
  • GetNodeNumber中计算该二叉树的总的节点个数,返回节点个数。
  • GetLeafNodeNumber中计算该二叉树的叶子节点个数,返回叶子节点个数。

测试说明

平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

以下是平台的测试样例:

测试输入:ABC##D##EF###
预期输出:
3
6
3

测试输入:ABCD###E#F##G##
预期输出:
4
7
3

给定一棵二叉树,计算该二叉树的深度、总节点个数和叶子节点个数。相关推荐

  1. 【数据结构】二叉树的节点总个数、叶子节点个数、第K层节点个数、二叉树的深度

    目录 1.结点总个数 1.1 局部静态变量法 思维 代码 不足之处 2.传指针法 程序代码 3.递归法 思想 程序代码 详细过程 2.叶子节点个数 思想 程序代码 3.第K层节点个数 思想 程序代码 ...

  2. 数据结构 day07 基础知识学习 (二叉树 的 前中后遍历 ,插入节点,删除叶子节点, 二叉树的节点个数 )

    一.今天有点迷. 二.希望大家看的懂代码 ,我已经很努力写注释了. 三.这次的知识很基础 ,(老师关于 二叉树节点删除的哪里 讲的有点差 ,主要是讲之前没有打好框架   (关于父节点的定义   )  ...

  3. 求二叉树b的结点个数、叶子结点个数

    #include"tree.cpp" //包含了二叉树的基本算法/*-------- 求二叉树b的结点个数.叶子结点个数 ---------*///求二叉树b的结点个数 int N ...

  4. (数据结构)1.实现二叉树的各种基本运算的算法2.实现二叉树的各种遍历算法3. 由遍历序列构造二叉树4.求二叉树中的结点个数、叶子节点个数、某结点层次和二叉树宽度

    实验内容 1.假设二叉树中的每个结点值为单个字符,采用二叉链存储结构存储.设计一个算法,计算一棵给定二叉树b中的所有单分支结点个数. 2.假设二叉树中的每个结点值为单个字符,采用二叉链存储结构存储.设 ...

  5. 求二叉树节点个数、叶子节点、节点层次与宽度

    需实现:(1)输出二叉树b的节点个数 (2)输出二叉树b的叶子节点个数 (3)求二叉树b中指定节点值(假设所有节点值不同)的节点的层次. (4)利用层次遍历求二叉树b的宽度 #include < ...

  6. 二叉树所有节点数、叶子节点数的计算

    一.假设二叉树采用二叉链存储结构,设计一个算法,计算一颗给定二叉树的所有节点数. 解法一 int n; void count(BTNode* p) {if(p){++n;count(p->lef ...

  7. 计算二叉树的叶子结点个数_C++数据结构二叉树统计总结点个数,叶子结点个数,单分支结点个数,双分支结点个数。...

    很多书上其实都有提到和该算法.但是经过自己的学习我自己想到一个算法.算是结合了其中的优点吧. 算法描述:该算法递归去统计结点个数.值得一提的是该系列算法都是统计根结点以下的符和条件的结点的个数进行了加 ...

  8. java计算二叉树的节点最小值_求二叉树根节点到叶子节点路径和的最小值:遍历(递归+非递归)...

    昨晚中兴笔试题,第一题是给定二叉树,每个节点的数据结构是 value,left,right,比较根节点到各个叶子节点路径和的大小,输出路径和的最小值.(补充:用ArrayList可以存储) 以前没做过 ...

  9. 【算法leetcode】2331. 计算布尔二叉树的值(多语言实现)

    文章目录 2331. 计算布尔二叉树的值: 样例 1: 样例 2: 提示: 分析 题解 rust go typescript python c c++ java 原题传送门:https://leetc ...

最新文章

  1. 【c语言】蓝桥杯算法提高 三个整数的排序
  2. tushare股票数据接口
  3. 阻塞队列的使用案例-注册成功后增加积分
  4. 尴尬!三星Galaxy S10系列面部识别疑似翻车:连兄妹都分不清
  5. [hbase]Hbase 在HDFS上的目录树结构
  6. 20210308 20210309 :链表类题目合集
  7. php在客户端禁用cookie时让session不失效的解决方法
  8. js页面传值,cookie
  9. 一张图解释什么是遗传算法_什么是智慧水务决策支持系统?从一张图说起
  10. 简单测试Content-Length和Chunked两种不同的数据传输方式
  11. 网页顶部广告展开与收起
  12. 【故事】程序员到底是干什么的
  13. c# ArrayList 和 Hashtable 的使用
  14. 论文写作-引言怎么写
  15. 卡塔兰(Catalan)数
  16. 医学统计学 第七章(假设检验)
  17. 诚邀参加“认知与路径:元宇宙科技传播”线上专题研讨会
  18. word流程图怎么做虚线框_如何在visio中画虚线框以及将visio图形复制到word文档
  19. 2-15 微信小程序array数据类型(附带方法解析)
  20. 什么是webpack?webpack构建工具如何理解?webpack是干什么的?

热门文章

  1. C++算法集锦:动态规划(一)
  2. linux命令行的软件推荐
  3. 学计算机南昌哪个中专比较好,南昌中专计算机主要学什么
  4. Linux系统中more和less命令的区别
  5. 新一代三维GIS技术白皮书v1.0
  6. matplotlib从绘图到排版
  7. 利用matlab实现三体问题(双星、3星、多星运动)
  8. 某行“软件最佳实践与沙盘演练”企业内训开始!
  9. xa 全局锁_索尼Sony Xperia X/Performance/XA解锁教程及解锁码
  10. 计算机图形学的主要研究内容是什么?