统计利用二叉树存储的森林中树的棵数

原创 2018年04月17日 16:47:45
普通树及其构成的森林均可转换成相应的二叉树,反之亦然。故而可以根据相应的转换方法去统计某一二叉树对应的森林中树的棵数。相应的二叉树可利用先序递归遍历算法创建。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。最后再统计该二叉树对应的森林中树的棵数。需要注意输入数据序列中的"#"字符和非"#"字符的序列及个数关系,这会最终决定创建的二叉树的形态(序列里面允许无效字符但需要正确处理)。

输入

输入为接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树)。

输出

输出该用例对应的二叉树表示的森林中树的棵数。

样例输入

A#B#CD###
ABC####
AB##C##
ABCD###EF##G##H##
A##B##

样例输出

3
1
2
2
1
#include<iostream>
using namespace std;
struct node
{
	char date;
	node *left, *right;
}*p;

void set(node *&p)
{
	char ch;
	cin >> ch;
	if (ch == '#')
	{
		p = NULL;
	}
	else
	{
		p = new node;
		p->date = ch;
		set(p->left);
		set(p->right);
	}
}

int k;
void find(node *&p)
{
	if (p != NULL)
	{
		k++;
		find(p->right);
	}
}
int main()
{
	k = 0;
	set(p);
	find(p);
	cout << k;
	return 0;
}

版权声明:本文为博主原创文章,转载注明出处 https://blog.csdn.net/qq_38271800/article/details/79977181

【数据结构_树_Tree_0981】统计利用二叉树存储的森林中树的棵数

来点科普先,简单介绍一下怎么计算二叉树储存的森林中树的棵树: 按照森林和二叉树的转换规则可得: 从二叉树根开始一直往右子树走,一共路过几个节点,对应的森林就有几个根,也就是说,对应的森林有几棵树 高...
  • IronCarrot
  • IronCarrot
  • 2017-03-20 20:12:37
  • 681

树的概念总结;树的存储结构;树、二叉树、森林的相互转换

树的相关概念 1、结点分为:根结点(无双亲、有孩子)、内部结点(有双亲、有孩子)、叶结点(有双亲、无孩子)2、结点与结点的关系:孩子、双亲、祖先、兄弟、堂兄弟3、结点的度:结点的度是结点的孩子个数4...
  • qq_19925065
  • qq_19925065
  • 2016-09-06 18:45:09
  • 359

树结构练习——判断给定森林中有多少棵树(相当于求连通分量个数)

 树结构练习——判断给定森林中有多少棵树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem ...
  • jia1506
  • jia1506
  • 2016-11-17 16:02:46
  • 316

数据结构 - 树和森林表示与遍历

双亲表示法(顺序存储结构) 用一组连续的存储空间来存储树的结点,同时在每个结点中附加一个指示器(整数域) ,用以指示双亲结点的位置(下标值) 。数组元素及数组的类型定义如下: #define...
  • wangzi11322
  • wangzi11322
  • 2015-04-30 10:03:27
  • 2846

树结构练习——判断给定森林中有多少棵树 (并查集)

树结构练习——判断给定森林中有多少棵树 Time Limit: 1000MS Memory limit: 65536K 题目描述  众人皆知,在编程领域中,C++是一门非常重...
  • u013486414
  • u013486414
  • 2014-11-17 23:42:29
  • 1083

26790: 树的数量

题目描述输入森林中的结点关系,统计森林中树的数量,输出树的根。 输入第一行:n:结点数量;k:边数;(n,k以下k行:每行两个结点编号:i,j:i是j的父结点(I,j输出输出: 第一行:树的数量。 第...
  • jing1223639316
  • jing1223639316
  • 2015-07-10 09:45:54
  • 229

树、森林与二叉树(树的存储结构(树的孩子兄弟链表应用举例),树转换为二叉树,二叉树转换成树和森林,树和森林的遍历)

树的存储结构 /*树的存储结构*/ /*双亲表示法*/ #define MAXSIZE 200 typedef char ElemType; typedef struct PNode//双亲表示法的...
  • qaz3171210
  • qaz3171210
  • 2015-02-25 01:25:53
  • 1275

数据结构实验——二叉树的常见操作

要求: 实验五  二叉树的常见操作 ⑴输入字符序列,建立二叉链表。 ⑵中序遍历二叉树:递归算法。 ⑶中序遍历二叉树:非递归算法。(最好也能实现先序,后序非递归算法) ⑷求二叉树的高度。 ...
  • u013573047
  • u013573047
  • 2014-11-08 11:23:12
  • 1018

树结构练习——判断给定森林中有多少棵树(并查集)

Problem Description 众人皆知,在编程领域中,C++是一门非常重要的语言,不仅仅因为其强大的功能,还因为它是很多其他面向对象语言的祖先和典范。不过这世上几乎没什么东西是完美的,C...
  • minose
  • minose
  • 2017-06-03 19:14:52
  • 135

构建一棵二叉树并按照层次遍历输出

这个算法中的构建一棵二叉树用的是前序和中序来构建二叉树的。 层次遍历当然要用到队列了。 #include #include #include #include using namespace st...
  • zhuyongqingacm
  • zhuyongqingacm
  • 2014-04-06 21:25:03
  • 1749
收藏助手
不良信息举报
您举报文章:统计利用二叉树存储的森林中树的棵数
举报原因:
原因补充:

(最多只允许输入30个字)