复习--二叉树&&树
树是一种很常用的数据结构,日后的学习中会经常碰到运用树的知识。
//构造二叉树
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
/*
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
*/
typedef struct node{
int data;
node *l;
node *r;
}*tree;
tree head,t; //head为头指针,同时为根节点,t为当前的节点
void dis(tree &p) //删除二叉树
{
if(p)
{
dis(p->l);
dis(p->r);
delete p;
}
}
void build(tree &p) //先读入根节点,再从左到右
{
int n;
cin>>n;
if(n != -)
{
p = new node;
p -> data = n;
build(p -> l);
build(p -> r);
}
else
p = NULL;
}
void frontvisit(tree p)
{
if(p)
{
cout<< p->data <<" ";
frontvisit(p->l);
frontvisit(p->r);
}
}
void midvisit(tree p)
{
if(p)
{
midvisit(p->l);
cout<<p->data<<" ";
midvisit(p->r);
}
}
void backvisit(tree p)
{
if(p)
{
backvisit(p->l);
backvisit(p->r);
cout<<p->data<<" ";
}
}
void in(tree &p,int n)
{
if(p)
{
if(n < p->data)
in(p->l,n);
if(n > p->data)
in(p->r,n);
}
else
{
p = new node;
p->data = n;
p->l = p->r =NULL;
}
}
int main()
{
int x;
build(t);
cin>>x;
in(t,x);
cout<<"frontvisit"<<endl;
frontvisit(t);
cout<<endl;
cout<<"midvisit"<<endl;
midvisit(t);
cout<<endl;
cout<<"backvisit"<<endl;
backvisit(t);
cout<<endl;
return ;
}
/*
5 3 2 1 -1 -1 -1 -1 6 -1 7 -1 -1
4
*/
复习--二叉树&&树的更多相关文章
- Trees on the level UVA - 122 复习二叉树建立过程,bfs,queue,strchr,sscanf的使用。
Trees are fundamental in many branches of computer science (Pun definitely intended). Current state- ...
- 洛谷U4727小L的二叉树[树转序列 LIS]
题目背景 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣. 所以,小L当时卡在了二叉树. 题目描述 在计算机科学中,二叉树是每个结点最多有两个子结点的 ...
- NOIP2003加分二叉树[树 区间DP]
题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都 ...
- BZOJ 1864 三色二叉树 - 树型dp
传送门 题目大意: 给一颗二叉树染色红绿蓝,父亲和儿子颜色必须不同,两个儿子颜色必须不同,问最多和最少能染多少个绿色的. 题目分析: 裸的树型dp:\(dp[u][col][type]\)表示u节点染 ...
- 二叉苹果树 - 二叉树树型DP
传送门 中文题面: 题目描述 有一棵苹果树,如果树枝有分叉,一定是分 2 叉(就是说没有只有 1 个儿子的结点,这棵树共有N 个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一 ...
- 6、二叉树树(java实现)
1.创建树的节点 public class Node { public Object data; //存储数据 public Node leftChild; //左子树指针 public Node r ...
- AVL排序二叉树树
AVL树第一部分,(插入) AVL树是一种自平衡二叉搜索树(BST),其中对于所有节点,左右子树的高度差不能超过1. 一个AVL树的示例 上面的树是AVL树,因为每个节点的左子树和右子树的高度之间的差 ...
- LintCode 推断一个二叉树树是否是还有一个二叉树的子书
有两个不同大小的二进制树: T1 有上百万的节点: T2 有好几百的节点. 请设计一种算法.判定 T2 是否为 T1的子树. /** * Definition of TreeNode: * class ...
- 伸展二叉树树(C#)
参考过好几篇关于将伸展树的代码,发现看不懂.看图能看懂原理.就尝试自己实现了下. 自顶向上的算法. using System; using System.Collections.Generic; us ...
随机推荐
- 如何在Linuxt系统下运行maven项目
如何在Linuxt系统下运行maven项目 我们知道现在利用MAVEN来管理JAVA项目是非常常见的.比如公司一般都有一个自己的MAVEN仓库,通过MAVEN仓库来解决我们的项目依赖,更加方便的构建项 ...
- Caffe2:python -m caffe2.python.operator_test.relu_op_test
1. 进行语句测试时候,出现问题, 设置环境变量CUDA_VISIBLE_DEVICES 参考: cuda设置指定可见方法 在/etc/profile文件或者-/.bashrc末尾添加以下行: exp ...
- javascript模块化编程(一)(http://www.ruanyifeng.com/blog/2012/10/javascript_module.html)
Javascript模块化编程(一):模块的写法 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个 ...
- anguar相关
1.创建组件 在某目录下创建组件 ng g c content/membersManage 2.创建服务 在某目录下创建服务 ng g service services/storage 2.创建模 ...
- tab切换案例
做个简单的tab切换效果,分别于jquery和js操作 (1)jQuery操作 先看下效果: <!DOCTYPE html> <html lang="en"> ...
- redis在linux下安装以及扩展
安装过redis后发现回头忘了,今天重新安装记录下 首先 我是在home下创建redis文件 mkdir redis 然后直接用wget安装 wget http://download.redis ...
- 46.颜色+品牌下钻分析时按最深层metric进行排序
主要知识点: 在做下钻分析时的排序 需求,以颜色进行bucket,这里bucket里面的doc以其各品牌的平均价格排序, GET /tvs/sales/_search { " ...
- PHP websocket之聊天室实现
PHP部分 <?php error_reporting(E_ALL); set_time_limit(0);// 设置超时时间为无限,防止超时 date_default_timezone_set ...
- mybatis源码阅读-MappedStatement各个属性解析过程(八)
调用方 类org.apache.ibatis.builder.xml.XMLMapperBuilder private void configurationElement(XNode context) ...
- nyoj 310二分+dinic
#include<stdio.h> #include<queue> #include<string.h> using namespace std; #define ...