题目描述

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

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

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

建树方法采用“先序遍历+空树用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 = ; };
~Bitree() {};
void CreateTree(string TreeArray);
void countleaves();
};
void Bitree::CreateTree(string treearray)
{
pos = ;
strtree.assign(treearray);
Root = CreateBitree();
}
BitreeNode *Bitree::CreateBitree()
{
BitreeNode *T;
char ch;
ch = strtree[pos++];
if (ch == '')
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();
}
}

DS二叉树--左叶子数量的更多相关文章

  1. DS二叉树--叶子数量

    题目描述 计算一颗二叉树包含的叶子结点数量. 提示:叶子是指它的左右孩子为空. 建树方法采用“先序遍历+空树用0表示”的方法,即给定一颗二叉树的先序遍历的结果为AB0C00D00,其中空节点用字符‘0 ...

  2. [Swift]LeetCode404. 左叶子之和 | Sum of Left Leaves

    Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are two l ...

  3. 【leetcode 简单】 第九十四题 左叶子之和

    计算给定二叉树的所有左叶子之和. 示例: 3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 # Definition for a binary ...

  4. 先序遍历创建二叉树,对二叉树统计叶子节点个数和统计深度(创建二叉树时#代表空树,序列不能有误)c语言

    #include "stdio.h" #include "string.h" #include "malloc.h" #define NUL ...

  5. LeetCode: 404.左叶子节点

    计算给定二叉树的所有左叶子之和. 示例: 3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 解析 我们需要找到这样的节点 属于叶子节点 属于父 ...

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

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

  7. LC: 404.左叶子节点

    计算给定二叉树的所有左叶子之和. 示例: / \ 9 20 / \ 15 7 ,所以返回 24 解析 我们需要找到这样的节点 属于叶子节点 属于父节点的左子节点 方法一:用栈,dfs遍历,用全局变量r ...

  8. LeetCode404Sum of Left Leaves左叶子之和

    计算给定二叉树的所有左叶子之和. 示例: 3 / \ 9    20 / \ 15   7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 class Solution { pub ...

  9. Java实现 LeetCode 404 左叶子之和

    404. 左叶子之和 计算给定二叉树的所有左叶子之和. 示例: 3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 /** * Definiti ...

随机推荐

  1. CodeForces 4A

    A A - Water~melon Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit St ...

  2. 初始While循环和for循环

    While循环 While循环,是一个循环加判断的组合,满足判断条件返回 真(True)开始循环代码块,不满足判断条件返回 假(False)不循环 格式: While 条件: 代码块 注意:在Whil ...

  3. Mybatis(七)-- LRU LFU 算法

    这篇博客主要介绍LRU LFU 算法,因为在Mybatis的缓存中会用到,所以放到这个系列中了.此外,这是我翻译的一篇文章,觉得原文已经写的很好了,所以就直接翻译一下,留作知识整理. 英文原文出处如下 ...

  4. mysql 开启binlog

    登录mysql之后使用下面的命令查看是否开启binlog show variables like 'log_%'; if没有开启则在mysql的配置文件中 加入以下内容 server_id=2 log ...

  5. LeetCode - Reorganize String

    Given a string S, check if the letters can be rearranged so that two characters that are adjacent to ...

  6. UVA10294 Arif in Dhaka (First Love Part 2)

    题意 PDF 分析 用n颗宝石串成项链和手镯, 每颗宝石的颜色可以t种颜色中的一种,当A类项链经过旋转得B类项链时,A和B属于一类项链, 而手镯不仅可以旋转还可以翻转,当A类手镯经过翻转得得到B类手镯 ...

  7. Centos7快速安装haproxy

    HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要 ...

  8. airflow-operator 可以管理airflow 的kuberntes 自定义controller && crd

    使用airflow-operator 我们可以让airflow 可以很方便的运行在k8s集群环境中,当前还在开发中 主要分为两部分:airflowbbase && airfowclus ...

  9. PowerDesigner V16.5 安装及汉化

    一.power designer是什么以及是干什么的? power designer是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具.分别从概念数据模型(Conceptual Dat ...

  10. 电脑上不安装Oracle时,C# 调用oracle数据库,Oracle客户工具 【转载】

    http://www.cnblogs.com/jiekzou/p/5047850.html Oracle的安装包通常都比较大,安装又比较费时,而且如果安装过程中不幸出错,各种蛋疼,即便是安装过N遍的老 ...