您的位置:首页 > 理论基础 > 数据结构算法

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

2017-03-20 20:12 411 查看
来点科普先,简单介绍一下怎么计算二叉树储存的森林中树的棵树:

按照森林和二叉树的转换规则可得: 从二叉树根开始一直往右子树走,一共路过几个节点,对应的森林就有几个根,也就是说,对应的森林有几棵树 高度为h的满二叉树最右边一路有h个节点(就是高度为n),因此对应的森林有h棵树.

所以很简单,利用先序遍历创建完树以后,直接利用右结点递归,找到右结点就cnt++;

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct node
{
char data;
struct node *L_Kid,*R_Kid;
}Tree;
int cnt=1;
void initTree(Tree *&T)
{
char str;
cin>>str;
if(str!='#')
{
T=(Tree *)malloc(sizeof(Tree));
T->data=str;
initTree(T->L_Kid);
initTree(T->R_Kid);
}
else T=NULL;
}
void num_Tree(Tree *&T)
{
if(T->R_Kid!=NULL)
{
cnt++;
num_Tree(T->R_Kid);
}
}
int main()
{
Tree *T;
initTree(T);
num_Tree(T);
cout<<cnt;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐