话不多说,直接看代码

1.头文件及二叉树结点定义

#include<iostream>
using namespace std;
typedef struct Bitnode
{char data;struct Bitnode* lchild, * rchild;
}Bitnode,*Bitree;

2.建立二叉链表,这里用的是先序建立

void FCreatBitree(Bitree& T)//先序建立二叉链表
{char ch;cin >> ch;if (ch == '#')T = NULL;else{T = new Bitnode;T->data = ch;FCreatBitree(T->lchild);FCreatBitree(T->rchild);}
}

3.叶子结点数的计算,采用递归方法

int Leaves_count(Bitree T)//求叶子节点数
{int num=;if (T==NULL) {return 0;}if (T->lchild == NULL && T->rchild == NULL)num++;Leaves_count(T->lchild);Leaves_count(T->rchild);return num;
}

4.打印叶子结点路径

void Leaves_path(Bitree T)
{Bitree p, q;//定义2个结点用于保存int top = 0;//top为当前p所指结点位置Bitree s[50];//使用q保存刚遍历过的节点,初始为空q = NULL;p = T;//传入的结点赋值给pwhile (p != NULL || top != 0) //如果p不为空或者top不为零进入循环{if (p != NULL) //如果p不为空,直接遍历到一个左叶子结点{s[++top] = p;p = p->lchild;}//遍历完后,p即为一个左叶子结点,在下一个循环中进入else ifelse if (top > 0){p = s[top];//把上面遍历的最后结点赋给pif (p->rchild == NULL || p->rchild == q){//如果p为叶子节点,则打印路径if (p->lchild == NULL && p->rchild == NULL) {for (int i = 1; i <= top; i++)cout <<s[i]->data <<" ";cout << endl;}//使用q保存刚访问过的节点q = p;top--;//跳过刚才的左遍历,继续退栈p = NULL;}//否则遍历右子树else p = p->rchild;}}
}

5.主程序调用上方函数即可

C++ 二叉树求叶子结点数及输出叶子结点的路径相关推荐

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

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

  2. 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)

    7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...

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

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

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

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

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

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

  6. c语言二叉树结点 深度,求二叉树的深度、总结点数和叶子结点数

    二叉树的二叉链表的存储结构: typedef   char   TElemType; typedef   struct    BiTNode { TElemType data;//数据元素 BiTNo ...

  7. 统计二叉树中叶子结点数数据结构C语言,统计二叉树中叶子结点个数的问题,

    #include #include typedef struct Node { int data; struct Node *LChild; struct Node *RChild; }BiTNode ...

  8. 二叉树遍历/先序输出叶子结点

    二叉树遍历 函数接口定义: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void Postor ...

  9. 第五期 C/C++数据结构 二叉树的遍历以及结点数、深度

    代码详见后面 实验三 树和二叉树 一.实验目的 1.使学生熟练掌握二叉树的逻辑结构和存储结构(重点). 2.熟练掌握二叉树的各种遍历算法(难点). 二.实验原理及说明 1. 前序遍历算法思想: (1) ...

  10. 设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树。假如一棵这样的二叉树中有m(m0)个叶子结点,那么该二叉树上的结点总数为( )。

    设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树.假如一棵这样的二叉树中有m(m>0)个叶子结点,那么该二叉树上的结点总数为( ). 正确答案: B   你的答案: B (正确) ...

最新文章

  1. 关于python变量的描述_Python变量命名的详细介绍
  2. linux安装nodejs一键脚本,ubuntu16.04部署nodejs+vue框架脚本
  3. 115网盘linux 下载速度慢,linux vps 上 下载115网盘 的方法
  4. C#开发微信门户及应用(28)--微信“摇一摇·周边”功能的使用和接口的实现
  5. linux输出和错误信息文件,Log4j配置将错误信息输出到指定文件中[linux tomcat]
  6. 河外动态:疑似UFO的编队在太阳附近徘徊
  7. 错误使用sym MEX文件 'D:\matlab\toolbox\maple\maplemex.mexw64' 无效: 缺少依赖共享库 的解决办法
  8. UnauthorizedAccessException Invaild cross-thread access
  9. window2008 、 oracle11.2g 无法imp,dmp。
  10. C++类头文件交叉引用出现error C2143: 语法错误: 缺少“
  11. mysql 插入语句语法_SQL 插入数据(INSERT INTO 语句)
  12. 【路径规划】全局路径规划算法——Dijkstra算法(含python实现)
  13. PADS9.5实战攻略与高速PCB设计-强烈推荐教程资料(完整书签)
  14. 《下学梯航》(全文)
  15. 2020年证券从业《证券市场基本法律法规》真题汇编卷一
  16. Spring:ReflectionUtils工具类使用一:Field
  17. srsRAN源码分析----enb端协议栈是如何运作
  18. golang学习和校招经历
  19. KB 与 kb 的区别
  20. 单相全桥逆变原理及仿真实验

热门文章

  1. 比较一下几款常用的SSH工具
  2. jq将php时间戳转化日期格式,JQuery将时间戳转换为时间
  3. ubuntu安装uvlayout
  4. 服务器部署Nodejs api 接口
  5. 实用的数据可视化工具大集合
  6. 小米手机抢购背后的摩尔定律
  7. 虚幻4服务端linux,UE4 虚幻4教程 服务端构建后启动错误的解决方法
  8. #第七章 基于太阳系数据的股市拟合数学模型的理论应用7.1倾斜的时空
  9. 安装linux出现分区出错,找到了linux分区顺序错乱修复方法
  10. 大数据学习---HIVE入门SQL学习