摘要: 题目描述 "链接" 给一串构成树的序列,已知该树是完全二叉搜索树,求它的层序遍历的序列 分析 二叉搜索树的性质:左子树改造中序遍历程序,将访问变成赋值 得到数组存储顺序 得到层序遍历顺序 完全二叉树:结点为空:$i n$ 结点为叶子:$2i n$ c++ include using namespac 阅读全文
posted @ 2019-08-01 03:46 Doragd 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 一幅画里面的鸟为同一棵树上的,问有多少棵树和多少只鸟,以及对于两只鸟判断是否在同一个树上 分析 如何合并: 枚举$1$到$k$, $merge(0, x)$ 统计信息:$fa[i]=i,i=1..maxn$执行初始化, $vis[i]$ 来标注有效结点,用$cnt[]$记录集合中 阅读全文
posted @ 2019-07-31 20:25 Doragd 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。首先在第一行输出家庭个数(所有有亲属关系的人都属于同一个家庭)。随后按下列格式输出每个家庭的信息:家庭成员的最小编号 家庭人口数 人均房产套数 人均房产面积。其中人均值要求保留小数点后3位 阅读全文
posted @ 2019-07-31 19:09 Doragd 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 有n个人,每个人喜欢k个活动,如果两个人有任意一个活动相同,就称为他们处于同一个社交网络。求这n个人一共形成了多少个社交网络,降序输出每个社交网络的人数 分析 一看就知道是并查集的。关键在于什么时候进行合并。以及每个社交网络人数怎么统计。 先看 问题二:每个社交网络人数怎么统计 阅读全文
posted @ 2019-07-31 14:54 Doragd 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 建立一棵AVL树,输出根结点 分析 注意下面标注的关键点!!!! 函数: getHeight,getBF,updateHeight,L,R,insert,create L: 左旋,说明右边太重了,所以要成为根的是右子树的根,temp就是取右子树的根,然后提上来时,temp的左子树 阅读全文
posted @ 2019-07-30 21:15 Doragd 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果 分析 注意每个地方二叉查找树的定义不同,看清题目 写insert函数的时候,不要忘记左右子树为NULL 镜像二叉查找树实际就是遍历的时候,把左右次序更换下就好了! c++ include 阅读全文
posted @ 2019-07-30 16:23 Doragd 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 给出树的结构和权值,找从根结点到叶子结点的路径上的权值相加之和等于给定目标数的路径,并且从大到小输出路径 分析 静态数组建树 dfs遍历:注意什么地方要回溯状态 二维数组排序,基本用vector实现,记住以后写begin和end了!如果用vector的话 c++ bool cmp 阅读全文
posted @ 2019-07-30 14:17 Doragd 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 给定后序和中序,求层序结果 分析 递归实现,这里给出先序和后序,求中序的 递归:考虑中间过程 先序$[preL,preR]$ 中序$[inL,inR]$ 根节点:$preL$ 中序根节点:$k,a[k]==a[preL]$ 遍历可得到 中序左子树结点个数:$k inL$ ,左子树 阅读全文
posted @ 2019-07-29 21:23 Doragd 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 给出一个链表,将链表排序,然后把链表上的结点按照data值的从小到大顺序输出 分析 定义静态链表的结构体,地址作为下标,注意,这里还需要记录address,为什么?因为排序以后下标不是地址了 同时定义flag变量,因为给出的结点有些根本不在链表中,所以需要再遍历一次(另一种遍历的 阅读全文
posted @ 2019-07-29 14:32 Doragd 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 给定两个链表首地址,以及各个结点,求两个链表的首个公共结点的地址,没有,则返回 1 关键点 用静态链表时注意该怎么写,怎么遍历,按照题意改造结构体,比如这里加了一个flag变量 遍历第一个链表标记每个结点为true,然后遍历第二个,遇到第一个flag为true的就是我们找的结点 阅读全文
posted @ 2019-07-29 10:13 Doragd 阅读(176) 评论(1) 推荐(0) 编辑