输入二叉树的先序序列,计算并输出该二叉树的深度与叶子节点个数。请将代码填写完整。

例如,下面二叉树对应的先序序列为“AB#D##C##"。

A

/    \

B      C

\

D

输入

叉树对应的先序序列为。

输出

二叉树的深度与叶子节点个数。

样例输入

AB#D##C##

样例输出

3 2

分析:

这道题只需要知道什么是树的深度和叶子节点数就行。

树的深度是从根点到叶子节点的结点数,叶子节点是没有左右孩子的结点。

代码详解:

#include<iostream>
using namespace std;
//结点结构体
struct Tree
{char data;Tree *lchild;Tree *rchild;
};
int num = 0;
void createTree(Tree *T)//创建二叉树
{char ch;cin >> ch;if (ch == '#')T->data = NULL;else{T->data = ch;Tree *TL = new Tree();T->lchild = TL;Tree *TR = new Tree();T->rchild = TR;createTree(T->lchild);createTree(T->rchild);}
}
//树的深度
int TreeDepth(Tree *T)
{int i, j;if (!T)return 0;if (T->lchild->data != NULL)i = TreeDepth(T->lchild);elsei = 0;if (T->rchild->data != NULL)j = TreeDepth(T->rchild);elsej = 0;return i > j ? i + 1 : j + 1;
}
//叶子节点数
void CountLeaf(Tree *T)
{if (T->data==NULL)return ;if (T->lchild->data == NULL&&T->rchild->data == NULL)//左右孩子都为空的就计数num++;CountLeaf(T->lchild);CountLeaf(T->rchild);return ;
}
int main()
{Tree *T;T = new Tree();createTree(T);int TT = TreeDepth(T);CountLeaf(T);cout << TT << " " << num << endl;return 0;
}

数据结构:二叉树的深度与叶子节点数相关推荐

  1. 计算二叉树的深度和叶子结点数

    目录 一.求给定二叉树的深度 二.求给定二叉树中的叶子结点数 三.例题 一.求给定二叉树的深度 二叉树的深度就是二叉树中结点的最大层次.如果二叉树是空树,则深度为0:否则,可分别求二叉树根的左子树和右 ...

  2. 转载 二叉树的创建、遍历、深度、叶子节点数

    1 # include <stdio.h> 2 # include <malloc.h> 3 typedef struct BiTNode{ 4 struct BiTNode ...

  3. 数据结构:二叉树的创建,打印前中后序遍历,节点个数,叶子节点数,销毁,第K层中节点的个数,查找值为x的节点

    二叉树遍历:按照某种特定的规则,依次对二叉树中的节点进行相应的操作,并且每个节点只操作一次.(采用递归思想) 先序遍历:先遍历根节点,再遍历根节点的左子树,最后遍历根节点的右子树. 中序遍历:先遍历左 ...

  4. 计算二叉树的深度和叶子结点数(递归算法实现)

    [问题描述] 计算二叉树的深度和叶子结点数 [输入形式] 输入二叉树的先序遍历序列建立二叉树. [输出形式] 输出二叉树的叶子结点数和深度. [样例输入] A B C # # # # [样例输出] L ...

  5. 代码实现求二叉树结点数和叶子结点数(C语言)

    本篇会用到之前讲过的二叉树三种遍历方法的代码实现,当然这里还会再写一遍,可以先去看这篇博客二叉树的概念及三种遍历方法(C语言)_Perfectkn的博客-CSDN博客 目录 两种方法求二叉树结点总个数 ...

  6. C++数据结构与算法—用递归方法求二叉树的叶子结点数

    用递归方法写一个算法,求二叉树的叶子结点数int leafnum(BTREE T). 要求: 1.定义二叉树的抽象数据类型和型BTREE,并定义基本操作. 2.编写函数1eafnum(BTREE T, ...

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

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

  8. 如何计算给定二叉树中的叶节点数?

    叶子节点的特征是无左孩子也无右孩子,还要注意与树只有一个节点的情况区分. 一.程序计算 int leaf(bitree t) {if(!t) return 0; //空树,无叶子 else if(!t ...

  9. c++数据结构二叉树(二叉链表实现)基本操作实现

    二叉树: 二叉树(Binary tree)是树形结构的一个重要类型.许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二 ...

最新文章

  1. 获取当前脚本目录路径问题汇总
  2. html无序列表的滚动效果,html无序列表标签和有序列表标签使用示例
  3. Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper
  4. Android ListView重写Adapter
  5. Laravel 的数据库迁移
  6. nginx rtmp 编码_基于Nginx的媒体服务器技术
  7. 1020 月饼 (25 分)(c语言)
  8. 课程设计个人报告——基于ARM实验箱的捕鱼游戏的设计与实现
  9. Visual Studio Code里关于ESLint的错误消息
  10. 使用python高通滤波器时报错numpy.linalg.linalg.LinAlgError: Singular matrix
  11. std::call_once写单列模式
  12. 双极型三极管共集电极、共基极放大电路
  13. java 规则引擎_【java规则引擎】java规则引擎搭建开发环境(示例代码)
  14. 领域驱动模型VO,BO,PO,DO,DTO概念及其区别
  15. Mac搭建本地服务器及测试demo
  16. b和kb的换算_KB和MB怎么换算?
  17. 用计算机证明的定理,定理机器证明
  18. css flex布局问题width:auto
  19. 老婆反问我:“是不是也算个凤凰男啊?”
  20. 唯快不破:redis源码剖析04-sds动态字符串

热门文章

  1. IPSEC VPN详解
  2. 网站常用主流网站数据库介绍
  3. 两万字详解Java异常,面试再也不怕被问到
  4. DevOps 的分与合
  5. java 将中文字符转为英文,java 将中文字符号转为英文
  6. 单点登录,同域名下有和非同域名下的登录
  7. python startswith_Python startswith()方法 - Python 教程 - 自强学堂
  8. 「微信群合影2.5.0」- 微信网页版账号不能登录解决办法,扫码登录
  9. linux下解压tar zip tgz
  10. 写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。