二叉树
时间:2019-08-25
本文章向大家介绍二叉树,主要包括二叉树使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
查找二叉树
已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点。
中序输出嘛!输出一个计数一个
从第一个结点开始判断有无左子树,走完一个就cnt++,然后再走右子树。左边走完判断该结点的值是不是要查找的,输出cnt就可以了。
贴
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 #define N 105 5 struct node{ 6 int data; 7 int left,right; 8 }num[N]; 9 int n,m,cnt; 10 void InOrder(int v) 11 { 12 if(num[v].left) InOrder(num[v].left); 13 cnt++; 14 if(num[v].data==m){printf("%d\n",cnt);return;} 15 if(num[v].right) InOrder(num[v].right); 16 } 17 int main() 18 { 19 scanf("%d%d",&n,&m); 20 for(int i=1;i<=n;i++) scanf("%d%d%d",&num[i].data,&num[i].left,&num[i].right); 21 InOrder(1); 22 }
小球
许多的小球一个一个的从一棵满二叉树上掉下来组成FBT(Full Binary Tree,满二叉树)
开始我还真的还建树模拟球掉下来......是我没见过世面了,后来找到规律了。贴。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int main() 5 { 6 int n,m,left,right;scanf("%d%d",&n,&m); 7 left=pow(2.0,n-1); 8 right=pow(2.0,n); 9 while(m) 10 { 11 if(m==1){printf("%d\n",left);break;} 12 int mid=(right-left)/2; 13 if(m%2==0) 14 { 15 left+=mid; 16 m/=2; 17 } 18 else{ 19 right-=mid; 20 m=(m+1)/2; 21 } 22 } 23 }
扩展二叉树
扩展二叉树的先序序列。输出其中序和后序序列。
先是不知道脑子里在想什么骚操作,后来又是脑子一热在i那里卡了很久...不知道自己在想些什么。
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 struct node{ 5 char data; 6 node *left,*right; 7 }; 8 string s; 9 int i=-1; 10 node *buildtree() 11 { 12 ++i; 13 node *tree=NULL; 14 if(s[i]!='.') 15 { 16 tree=new node; 17 tree->data=s[i]; 18 tree->left=buildtree(); 19 tree->right=buildtree(); 20 } 21 return tree; 22 } 23 void InOrder(node *root) 24 { 25 if(root) 26 { 27 InOrder(root->left); 28 printf("%c",root->data); 29 InOrder(root->right); 30 } 31 } 32 void PostOrder(node *root) 33 { 34 if(root) 35 { 36 PostOrder(root->left); 37 PostOrder(root->right); 38 printf("%c",root->data); 39 } 40 } 41 int main() 42 { 43 cin>>s; 44 node *root=buildtree(); 45 InOrder(root); 46 printf("\n"); 47 PostOrder(root); 48 }
二叉树的繁茂度
一个二叉树的繁茂度定义为各层结点数与树的高度的乘积。 用广义表表示的n棵二叉树,输出此棵树的繁茂度。
a[up]计当前高度时的结点数,max计最高高度。最后累加得结果。
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main() 5 { 6 int n,ans,l; 7 string s; 8 cin>>n; 9 while(n--) 10 { 11 int up=0,max=0,sum=0; 12 int a[105]={0}; 13 cin>>s; 14 l=s.size(); 15 for(int i=0;i<l;i++) 16 { 17 if(s[i]!='('&&s[i]!=')'&&s[i]!=',') a[up]++; 18 if(s[i]=='(') 19 { 20 up++; 21 max++; 22 } 23 if(s[i]==')') 24 up--; 25 } 26 for(int i=0;i<=max;i++) sum+=a[i]*i; 27 cout<<sum<<endl; 28 } 29 }
原文地址:https://www.cnblogs.com/Aaaamber/p/11408348.html
- CentOs7.3 修改主机名
- 基础篇章:React Native之Flexbox的讲解(Height and Width)
- PDF.js专题
- CentOs7.3 编译安装 Nginx 1.9.9
- 基础篇章:关于 React Native 之 RefreshControl 组件的讲解
- CentOs7.3 安装 JDK1.8
- 基础篇章:关于 React Native 之 ListView 组件的讲解
- maven环境快速搭建
- CentOs7.3 搭建 RabbitMQ 3.6 Cluster 集群服务
- CentOs7.3 搭建 Redis-4.0.1 Cluster 集群服务
- CentOs7.3 搭建 Redis-4.0.1 单机服务
- Shodan新手入坑指南
- 我用过的——Spring定时任务的几种用法
- CentOs7.3 搭建 SolrCloud 集群服务
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 别再用JSON配置文件了
- 什么,你一定要基于FPKM标准化表达矩阵做单细胞差异分析
- Tomcat 9最新版安装与使用手册,tomcat更改端口号,tomcat控制台乱码问题解决方法
- Python 技术篇-读取遍历指定路径的文件,区分文件和文件夹
- MySQL蜜罐获取攻击者微信ID
- PyQt5 技巧篇-增加一个类级变量,类级变量的设置方法,类级"常量"设置方法
- PyQt5 技巧篇-按钮隐藏并保留位置,设置按钮的可见度,设置按钮透明度
- PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态
- PyQt5 技巧篇-QWidget、Dialog界面固定大小设置
- 力扣:地下城游戏,手把手教你做困难题
- RN布局
- 学会MySQL主从复制读写分离,看这篇就够了
- Canal+Kafka实现MySQL与Redis数据同步
- 超详细canal入门,看这篇就够了
- 详细讲解!RabbitMQ防止数据丢失