数据结构树的基本操作_树的各类基本操作(数据结构)
#include "iostream"
/*
输入:ABC DE G F
ABC DE G F
*/
#include "bits/stdc++.h"
using namespace std;
typedef struct bitnode
{
char data;
bitnode *lchild,*rchild;
} *bintree;
bintree creatree(bintree &root)//先序创建树
{
char a=getchar();
if(a==' ')
{
root=NULL;
return root;
}
else
{
root=(bintree)malloc(sizeof(bitnode));
root->data=a;
creatree(root->lchild);
creatree(root->rchild);
return root;
}
}
void PreOrderTraverse(bintree root)//InOrderTraverse中序 PostOrderTraverse 倒序
{
if(root==NULL)
{
return ;
}
else
{
PreOrderTraverse(root->lchild);
PreOrderTraverse(root->rchild);
cout<data<
}
}
int CountDegreeOne(bintree root)//度为一节点的个数
{
if(root==NULL)
return 0;
else
{
int a=CountDegreeOne(root->lchild);
int b=CountDegreeOne(root->rchild);
if(root->lchild&&!root->rchild||root->rchild&&!root->lchild)
return a+b+1;
else
return a+b;
}
}
int DeepTree(bintree root)//树的深度
{
if(root==NULL)
return 0;
else
{
int a=DeepTree(root->lchild);
int b=DeepTree(root->rchild);
if(a>=b)
return a+1;
else
return b+1;
}
}
int same(bintree root,bintree root1)//判断两棵树是否相同
{
if(root&&!root1||root1&&!root||!root&&!root1)
{
return 0;
}
else
{
if(root->data==root1->data)
{
int a=same(root->lchild,root1->lchild);
int b=same(root->rchild,root1->rchild);
if(a==b==1)
return 1;
}
else
return 0;
}
}
int main()
{
bintree root;
bintree root1;
creatree(root);
getchar();
creatree(root1);
PreOrderTraverse(root);
cout<
cout<
if(same(root,root1))
cout<
else
cout<
return 0;
}
数据结构树的基本操作_树的各类基本操作(数据结构)相关推荐
- python 树状数组_树状数组(Binary Indexed Tree) 总结
1."树状数组"数据结构的一种应用 对含有n个元素的数组(a[1],...,a[k],...,a[n]): (1)求出第i个到第j个元素的和,sum=a[i]+...+a[j]. ...
- python数据结构和算法讲解_【学习】python数据结构和算法
二.算法分析 2.2 什么是算法分析 大O表示法 image.png 2.3 python数据结构的性能 列表 image.png 字典 image.png 说一下list[index]的o(1)原理 ...
- 数据结构树的基本操作_[数据结构]树的建立与基本操作 解题报告
Problem Description 在本实验中,程序的输入是一个表示树结构的广义表.假设树的根为 root ,其子树森林 F = ( T1 , T2 , ... , Tn ),设与该树对应的广义表 ...
- 常用的数据结构_三分钟了解区块链常用数据结构「默克尔树」
免责声明:本文旨在传递更多市场信息,不构成任何投资建议.文章仅代表作者观点,不代表火星财经官方立场. 小编:记得关注哦 来源:万向区块链 原文标题:三分钟了解区块链常用数据结构「默克尔树」 默克尔树是 ...
- python链表和树实验报告_数据结构树和森林实验报告
_ 树和森林应用实验 实验报告 实验目的 ( 1) 掌握树和森林的二叉链表表示方法. (2) 掌握树和二叉树的结构及算法之间的对应关系. (3) 掌握树的两种遍历算法及其应用. 实验运行环境 Visu ...
- js遍历树节点下的所有子节点_【数据结构与算法】(3)——树和二叉树
树 树的基本概念 树是一种非线性的数据结构,样子如图所示: 树的主要特点是树中的数据是分层存储的,每个元素称为树的节点,最顶层有且只有一个元素,称为根节点,其余层可以有任意数量的节点.除了根节点,其余 ...
- Mysql索引数据结构有多个选择,为什么一定要是B+树呢?_面试 (MySQL 索引为啥要选择 B+ 树)
Mysql索引数据结构 下面列举了常见的数据结构 二叉树 红黑树 Hash表 B-Tree(B树) Select * from t where t.col=5 我们在执行一条查询的Sql语句时候,在数 ...
- 数据结构与算法 实验5 树、二叉树和森林的基本操作
1. 实验目的 理解树的存储结构,并掌握树的基本操作. 2. 实验介绍 了解树和森林的概念,包括树的定义.树的术语.掌握二叉树的概念.性质及二叉树的表示.熟练掌握二叉树的遍历算法,并且能灵活运用遍历算 ...
- 【数据结构】_树与二叉树
目录 引言 一.什么是树? 1.树的定义 2.树的特点 3.树的表示法 二.树的一些基本术语 三.树的性质 四.什么是二叉树? 1.基本概念 2.二叉树的五种基本形态 3.二叉树的性质 五.满二叉树. ...
最新文章
- Mac MySQL 数据库配置(关系型数据库管理系统)
- 第八届全国大学生智能汽车竞赛获奖名单
- Flex使用cookie保存登状态
- 【Groovy】Groovy 动态语言特性 ( Groovy 语言与 Java 语言执行效率对比 | 以动态特性编译的 Groovy 类 | 以静态特性编译的 Groovy 类 )
- sublime Text3插入参考文献问题
- linux内核微妙时,Linux内核模块时间同步函数汇总
- CentOS6.5 gcc升级到4.8.2
- python方差分析模型的预测结果怎么看_statsmodels中方差分析表结果解析
- Smart-Mall新零售商城系统
- KSQL中Update多表级联更新的语法
- mysql inet addr_InetAddress类的使用
- CSS background-position用法
- SQL2005学习(十六),SQL小知识点
- spring service加上@autowired 空指针_Spring整合activeMQ和JsonP
- 苹果CMS采集方法支持文章资源采集
- MAX30102 血氧调试笔记
- matlab钉子链条,MatLab的Galton钉板问题训练报告 终极版
- h5 - mui 使用技巧
- 操作rabbitMQ时,误删guest账户,无法登录
- 机器学习:XGBoost+LightGBM+catboost+5折+stacking的用法