栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

SWUST OJ#982( 输出利用二叉树存储的普通树的度)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SWUST OJ#982( 输出利用二叉树存储的普通树的度)

目录

前言

题目

数据结构代码

 壟(❁´◡`❁)您的点赞➕评论➕收藏⭐是作者创作的最大动力爛


前言

想要做好这个题目,首先得明白二叉树与树之间是如何转化的,这里博主在这里浅说一下树是如何转化成二叉树的,先将树的兄弟节点用线连接起来,父节点若与其孩子节点有连线,我们仅保留其与最左孩子的连线,将其他的连线全部抹去,最后把结果,摆正一下,就得到了二叉树,过程如下图所示:

所以我们可以发现由树转化成的二叉树有如下特点:

  • 根节点一定是没有右孩子的
  • 普通树转化成二叉树之后,其节点的左孩子仍然为左孩子
  • 二叉树的右孩子节点为普通树的兄弟节点

题目

数据结构代码
#include 
#include 
using namespace std;
//定义二叉树
typedef struct Node
{
	char data;
	Node *Lchild, *Rchild;
} BT;
//用先序遍历创建二叉树
void Creater_BT(BT *&Root)
{
	char c;
	cin >> c;
	if (c == '#') Root = NULL;
	else
	{
		Root = (BT *)malloc(sizeof(Node));
		Root->data = c;
		Creater_BT(Root->Lchild);
		Creater_BT(Root->Rchild);
	}
}
//主体函数
int degree = 1, maxn = 0;
void Get_Degree(BT *&Root, int n)
{
	if (Root != NULL)
	{
		if (Root->Lchild != NULL) Get_Degree(Root->Lchild, n);
		if (Root->Rchild != NULL) Get_Degree(Root->Rchild, n + 1);
	}
	maxn = max(maxn, n);
}
int main()
{
	BT *Root;
	Creater_BT(Root);
	if (Root->Rchild == NULL)
	{
		Get_Degree(Root, degree);
		cout << maxn;
	}else cout << "ERROR"; //如果根节点有右孩子,则不是用二叉树存储的普通树
	return 0;
}

 壟(❁´◡`❁)您的点赞➕评论➕收藏⭐是作者创作的最大动力爛

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号