题目描述

计算一颗二叉树包含的叶子结点数量。

左叶子是指它的左右孩子为空,而且它是父亲的左孩子

提示:可以用三叉链表法,也可以用现有算法对两层结点进行判断

建树方法采用“先序遍历+空树用0表示”的方法

输入

第一行输入一个整数t,表示有t个测试数据

第二行起输入二叉树先序遍历的结果,空树用字符‘0’表示,输入t行

输出

逐行输出每个二叉树的包含的左叶子数量

样例输入

3
AB0C00D00
AB00C00
ABCD0000EF000

样例输出

0
1
2
这里的关键判断是

#include<iostream>
#include<string>
using namespace std;
class BitreeNode
{
public:char data;BitreeNode *left;BitreeNode *right;BitreeNode():left(NULL),right(NULL){}~BitreeNode(){}
};
class Bitree
{
private:BitreeNode *Root;int pos,count;string strtree;BitreeNode *CreateBitree();void countleaves(BitreeNode *t);
public:Bitree() { count = 0; };~Bitree() {};void CreateTree(string TreeArray);void countleaves();
};
void Bitree::CreateTree(string treearray)
{pos = 0;strtree.assign(treearray);Root = CreateBitree();
}
BitreeNode *Bitree::CreateBitree()
{BitreeNode *T;char ch;ch = strtree[pos++];if (ch == '0')T = NULL;else{T = new BitreeNode();T->data = ch;T->left = CreateBitree();T->right = CreateBitree();}return T;
}
void Bitree::countleaves()
{countleaves(Root);cout << count << endl;
}
void Bitree::countleaves(BitreeNode *t)
{if (t){if (t->left){if (!t->left->left && !t->left->right)count++;}countleaves(t->left);countleaves(t->right);}
}
int main()
{int t;cin >> t;while (t--){string str;cin >> str;Bitree *tree;tree = new Bitree();tree->CreateTree(str);tree->countleaves();}
}

转载于:https://www.cnblogs.com/Liu269393/p/10217295.html

DS二叉树--左叶子数量相关推荐

  1. [二叉树|深搜|dfs] leetcode 404 左叶子之和

    [二叉树|深搜|dfs] leetcode 404 左叶子之和 1.题目 题目链接 计算给定二叉树的所有左叶子之和. 示例: 3/ \9 20/ \15 7在这个二叉树中,有两个左叶子,分别是 9 和 ...

  2. 二叉树的叶子结点按从左到右的顺序连成一个单链表

    1.题目描述 上图中的二叉树的叶子结点,按从左到右的顺序连成的单链表如下图所示: 2.解题思路 题目要求将叶子节点按自左向右的次序连接成一个单链表,因此很容易考虑到的便是将整棵二叉树按照先序或中序或后 ...

  3. Suzy找到实习了吗Day 17 | 二叉树进行中:110. 平衡二叉树,257 二叉树的所有路径,404. 左叶子之和

    110. 平衡二叉树 题目 判断一颗二叉树是否是平和二叉树:一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 . 我的错误trial 我通过写了一个函数(后序遍历 ...

  4. 【leetcode-DFS】求根节点到叶节点数字之和/二叉树的最大路径和/路径总和/左叶子之和/树的直径

    文章目录 求根节点到叶节点数字之和 深度优先搜索 广度优先搜索 二叉树的最大路径和 DFS 路径总和1 深度优先搜索 广度优先搜索 路径总和2 回溯法 广度优先搜索 左叶子之和 递归 DFS 树的直径 ...

  5. 算法训练营 day17 二叉树 平衡二叉树 二叉树的所以路径 左叶子之和

    算法训练营 day17 二叉树 平衡二叉树 二叉树的所以路径 左叶子之和 平衡二叉树 110. 平衡二叉树 - 力扣(LeetCode) 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高 ...

  6. 将二叉树的叶子结点转换成单链表,并返回最左叶子结点的地址(链头)

    http://blog.csdn.net/wangyangkobe/article/details/6756700 编写一个递归算法,利用叶子结点中空的 右连接指针域rchild,将所有叶子结点自左向 ...

  7. 算法----左叶子之和

    题目 计算给定二叉树的所有左叶子之和.示例:3/ \9 20/ \15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24来源:力扣(LeetCode) 链接:https://lee ...

  8. LeetCode 404. 左叶子之和(Sum of Left Leaves)

    404. 左叶子之和 404. Sum of Left Leaves LeetCode404. Sum of Left Leaves 题目描述 计算给定二叉树的所有左叶子之和. 示例: 3/ \9 2 ...

  9. 404. Sum of Left Leaves 左叶子之和

    计算给定二叉树的所有左叶子之和. 示例: 3/ \9 20/ \15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 DFS 判断一下,然后要么加和要么继续DFS. Code d ...

最新文章

  1. gradle项目打war和jar包
  2. java tongpaiyu danliantiao_java版的汉字转拼音程序
  3. django 创建mysql失败_创建表时出现Django MySQL错误
  4. 关于计算机网络的描述错误的是,【单选题】以下关于计算机网络定义的描述中,错误的是...
  5. maven项目包导不进去_IntelliJ Idea下Maven插件使用技巧
  6. python和java哪个好-Python和Java到底哪个更好?
  7. 风好大,我好冷——个人分工理解
  8. 极客大学架构师训练营 数据结构与算法 分布式数据库 Hadoop 第八次作业
  9. 微信开发者工具下载安装教程
  10. VS2019配置opencv教程【推荐】
  11. Keras:基于Python的深度学习库
  12. python把英语句子成分字母_python把英语句子成分字母
  13. python人机交互界面设计_Python-Tkinter图形化界面设计(详细教程 )
  14. Unimodal Array
  15. 人类的行为与程序计算
  16. ACM779-兰州烧饼
  17. 再见,MySQL !
  18. 在计算机中正确的邮件写信格式,电子邮件格式怎么写
  19. 一位营销总监的辞职信
  20. 从零学习知识图谱——01(知识图谱技术介绍)

热门文章

  1. ODAC(V9.5.15) 学习笔记(十七)主从模式
  2. 【备份恢复】Oracle 数据备份与恢复微实践
  3. [K/3Cloud] KSQL 关联表更新字段Update语法
  4. Live Writer 在oschina上的代码高亮插件推荐
  5. python基础入门视频-Python基础入门视频课程——笔记
  6. Pycharm主题:基于网上一款eyecare主题自制的Hbuilder主题Watermelon
  7. 题解 P2387 【[NOI2014]魔法森林】
  8. 如何估算大型项目的工作量
  9. pyplot绘图标题错误处理
  10. HDFS集中式缓存管理(Centralized Cache Management)