// 树的遍历.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <iostream>using namespace std;struct BTNode{int data;struct BTNode *lchild, *rchild;
};
typedef struct BTNode  BTnode;
typedef struct BTNode* BiTree;void preOrder(BTNode *root){if (root == NULL){return;}printf("%d",root->data);//遍历左子树preOrder(root->lchild);//遍历右子树preOrder(root->rchild);
}
void inOrder(BTNode *root){//中序遍历if (root == NULL){return;}//遍历左子树preOrder(root->lchild);printf("%d", root->data);//遍历右子树preOrder(root->rchild);
}
void postOrder(BTNode *root){//后序遍历if (root == NULL){return;}//遍历左子树preOrder(root->lchild);//遍历右子树preOrder(root->rchild);printf("%d", root->data);
}
int sum;
void cntLeaf(BTNode *root){//求叶子结点的个数if (root != NULL){if (root->lchild == NULL&&root->rchild == NULL){sum++;}if (root->lchild){cntLeaf(root->lchild);}if (root->rchild){cntLeaf(root->rchild);}}
}
//sum做全局变量 当多线程编程时 会造成资源竞争 因而不建议那么用
//解决方案:把全局变量变成函数参数
void cntLeaf2(BTNode *root,int *sum2){if(root != NULL){if (root->lchild == NULL&&root->rchild == NULL){(*sum2)++;}//这句话放在中间,后面都可以,因为只是访问的顺序不一样,但是都会去访问的,只是先序中序后序的差别而已,本质是一样的if (root->lchild){cntLeaf2(root->lchild,sum2);}if (root->rchild){cntLeaf2(root->rchild,sum2);}}
}int _tmain(int argc, _TCHAR* argv[])
{BTNode t1, t2, t3, t4, t5;memset(&t1,0,sizeof(BTNode));memset(&t2, 0, sizeof(BTNode));memset(&t3, 0, sizeof(BTNode));memset(&t4, 0, sizeof(BTNode));memset(&t5, 0, sizeof(BTNode));t1.data = 1;t2.data = 2;t3.data = 3;t4.data = 4;t5.data = 5;//建立关系t1.lchild = &t2;t1.rchild = &t3;t2.lchild = &t4;t3.lchild = &t5;//树的遍历cout << "先序遍历" << endl;preOrder(&t1);cout << "中序遍历" << endl;inOrder(&t1);cout << "后序遍历" << endl;postOrder(&t1);//求叶子结点的个数cntLeaf(&t1);cout << "叶子结点个数:" << sum << endl;//优化 求叶子结点的个数{int mySum = 0;cntLeaf2(&t1, &mySum);cout << "叶子结点个数:" << mySum << endl;}return 0;
}

求树的叶子结点的个数相关推荐

  1. 求二叉树中叶子结点的个数

    #include<iostream> #define N 63using namespace std;char str[] = "ab#d##c#e##"; int i ...

  2. 31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告

    励志用尽量少的代码做高效的表达. 以二叉链表作为二叉树的存储结构,求二叉树的叶子结点个数. 输入格式: 输入二叉树的先序序列. 提示:一棵二叉树的先序序列是一个字符串,若字符是'#',表示该二叉树是空 ...

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

    7-5 求二叉树的叶子结点个数 (20 分) 以二叉链表作为二叉树的存储结构,求二叉树的叶子结点个数. 输入格式: 输入二叉树的先序序列. 提示:一棵二叉树的先序序列是一个字符串,若字符是'#',表示 ...

  4. java语言 写一算法求其叶子数目_数据结构(Java)在线作业1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树共有( )个结点。A. n+1B. 2n-1...

    数据结构(Java)在线作业1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树共有( )个结点.A. n+1B. 2n-1 数据结构(Java)在线作业 1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树 ...

  5. Java创建二叉树,并使用递归算法求二叉树中叶子结点的数目

    问题描述 创建二叉树,并使用递归算法求二叉树中叶子结点的数目 输入 输入一个用'.'来标明空子树的先根遍历序列,如ABD-EH-CF.I-G- 输出 叶子结点的个数 存储结构 二叉树 算法的基本思想 ...

  6. 二叉树题目----4 前序遍历重构二叉树 AND 求二叉树中所有结点的个数

    前序遍历重构二叉树 思路 整个二叉树用数组存储 因为先序遍历它先遍历根,再遍历左,左边没有跑完是不会去遍历右边的,所以遍历左子树,就是数组元素每回向后一个,个数-1 遍历右边时,就是数组起始位置+左子 ...

  7. 树中的叶子结点的个数 计算方法

    树中的叶子结点的个数计算 例题: 计算方法已知在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶子结点的个数为? 解决这道题的思路是列出 ...

  8. 树的应用:求树的叶子节点数 求树的高度、copy一棵树

    #if 0 //树的应用 //1.求树的叶子节点: 度为0的节点 //先判断根节点是否是叶子节点,然后计算左子树的叶子节点个数 //在计算 右子树节点个数void coutLeaf(BiNode *T ...

  9. 【数据结构·考研】二叉树叶子结点的个数

    二叉树叶子结点的个数 非递归的求法,用广度优先遍历,每出队一个结点,判断它是不是叶子结点.递归的做法,先由上自下遍历,等遍历到叶子处再逐层返回左右子树的叶子结点总和,最后得到整棵树的叶子结点数. 那么 ...

最新文章

  1. 监控io性能, free命令, ps命令, 查看网络状态, linux下抓包
  2. html5基础知识文档,HTML5基础知识(1)
  3. 浅谈自然语言在科技时代的运用
  4. 针对新手的Java EE7和Maven项目-第3部分-定义ejb服务和jpa实体模块
  5. 实现自适应位置--footer紧贴浏览器底部
  6. base64 string 放不下_String、byte[]、Base64相互转换,不要再用错了
  7. css中的伪类 之 first-child
  8. 四平方和蓝桥杯Java_蓝桥杯-四平方和问题
  9. 基于Android的家校联系平台开发(论文)
  10. IBM8800存储,光钎交换机384B,主机Linux,二代支付前置
  11. Twaver-HTML5基础学习(5)告警元素(Alarm)的告警位置(偏移量以及定位理解)
  12. 安装postgreSQL出现configure:error:readline library not found解决方法及pg安装全过程
  13. Python网络爬虫与信息提取(二):网络爬虫之规则(Requests库 Robots规则)
  14. NPN PNP 接近开关
  15. Android动画总结系列(2)——补间动画使用
  16. netlink编程注意事项
  17. 杠子老虎鸡虫 《python二维游戏编程》课后项目一
  18. 游戏客户端安全方案。
  19. 名帖52 王献之 小楷《洛神赋》
  20. [审核]App Store审核指南

热门文章

  1. 熊军:不积跬步 无以至千里 技术路上没有捷径
  2. 壹步网:聚焦肢残儿童,为肢残儿童安装免费假肢公益项目启动
  3. 迈向2015,你的智能手环还在戴吗?
  4. 详细步骤:SCI等论文投稿,修改图片格式visio-eps,无需ps
  5. 为了实现脱单,程序员们的脑洞简直要冲破天际了!
  6. 科研入门宝典(二):文献调研工作如何展开
  7. debian+gnu/linux+9,观点|Debian GNU/Linux,22 年未完的美妙旅程
  8. 正六面体用若干种颜色染色的问题解法
  9. Kafka Strem
  10. 全球最杰出的14位程序员