是不同的但有着密切联系的两种数据结构。 自由,是一个连通的、无环的无向。一般情况下,我们提到一个时,会省略掉形容词“自由”。称一个可能不连通的无向无环图为森林。许多的算法对森林也适用。 1. 自由的若干性质 令 G=(V,E) 是一个无向,下面的描述是等价的, G 是自由; G 中任何两顶点由唯一简单路径相连; G 是连通的,但从图中移除任意一条边得到的均不
转载 2017-07-03 08:23:00
261阅读
2评论
的深度优先遍历*:其实也是的一种:分为有向和无向的储存:第一种:邻
原创 2023-02-03 10:20:28
220阅读
的DFS 题目:https://www.acwing.com/problem/content/848/ 代码 #include<bits/stdc++.h
原创 2022-09-23 18:20:58
64阅读
4.4 给定一棵二叉,设计一个算法,创建含有某一深度上所有结点的链表(比如,若一棵的深度为D,则会创建D个链表)。类似于leetcode:Populating Next Right Pointers in Each Node II解答这道题目本质上是个BFS,也就是说,如果已经构建了第i层结点的...
转载 2014-12-06 10:59:00
38阅读
2评论
4.3 给定一个有序整数数组,元素各不相同按升序排列,编写一个算法,创建一棵高度最小的二叉查找。解答想要使构建出来的二叉高度最小,那么对于任意结点, 它的左子树和右子树的结点数量应该相当。比如,当我们将一个数放在根结点, 那么理想情况是,我们把数组中剩下的数对半分,一半放在根结点的左子树, 另一...
转载 2014-12-06 10:24:00
42阅读
2评论
4.7 设计并实现一个算法,找出二叉中某两个结点的第一个共同祖先。不得将额外的结点储存在另外的数据结构中。注意:这不一定是二叉查找。解答本题的关键应当是在Avoid storing additional nodes in a data structure 这句话上。我的理解是,不允许开额外的空间...
转载 2014-12-06 14:04:00
63阅读
2评论
4.1 实现一个函数,检查二叉是否平衡。在这个问题中,平衡的定义如下:任意一个结点,其两颗子树的高度差不超过1.C++实现代码:#include#include#includeusing namespace std;//Definition for binary treestruct TreeN...
转载 2014-12-05 21:30:00
20阅读
2评论
4.9 给定一颗二叉,其中每个结点都含有一个数值。设计一个算法,打印结点数值总和等于某个给定值的所有路径。注意,路径不一定非得从二叉的根节点或叶子节点开始或结束。类似于leetcode:Path Sum IIC++实现代码:(使用了双重的递归)对于不含有parent指针域时。#include#i...
转载 2014-12-06 15:23:00
48阅读
2评论
4.8 你有两棵非常大的二叉:T1,有几百万个结点;T2,有几百个结点。设计一个算法,判断T2是否为T1的子树。如果T1有这么一个结点n,其子树T2一模一样,则T2C++实现代码:#include#includeusing namespace std;//Definition for binar...
转载 2014-12-06 14:28:00
45阅读
2评论
4.6 设计一个算法,找出二叉查找中指定结点的“下一个”结点(也即中序后继)。可以假定每个结点都含有指向父节点的连接。思路:有两种情况:1)如果该结点存在右子树,则中序后继即为右子树中最小的结点。 2)如果该结点不存在右子树,则后继结点为使得所给结点在其祖先结点的左子树上的第一个祖先结点...
转载 2014-12-06 13:03:00
20阅读
2评论
4.2 给定有向,设计一个算法,找出两个结点之间是否存在一条路径。解答根据题意,给定一个有向和起点终点,判断从起点开始,是否存在一条路径可以到达终点。 考查的就是的遍历,从起点开始遍历该,如果能访问到终点, 则说明起点终点间存在路径。稍微修改一下遍历算法即可。使用广度优先遍历实现代码:#i...
转载 2014-12-06 09:50:00
43阅读
2评论
基础:结构接触的也是比较多的,基础部分网上到处都是,这里就长话短说,存储的两种方式,一种是邻接表,一种是邻接矩阵;举例说明吧,如下图,我们该怎么构建邻接表和邻接矩阵;(抄袭网上的)邻接表: 邻接矩阵 基于邻接表的的构造如下所示:顶点类:(其实无论是顶点类,边类,还是类,他们含有的成员变量,成员方法都是不固定,根据需要可以适当的添加,现在我以最基本的要求构造类)class Vertex{
转载 2023-07-18 15:35:17
43阅读
先看效果:   定义的数据结构 [java]  view plain copy 1. /** 2. * 2010-11-8 3. * John 4. */ 5. package tree; 6. 7. import java.util.ArrayList; 8. import java.util.
#include <iostream> #include <algorithm> #include <cstring> using namespace std; const int N = 100010, M = N * 2; int n; int h[N], e[M], ne[M], idx; bool st[N]; int ans = N;
原创 2024-02-07 10:33:58
57阅读
研发时候,不要受原来的术语的影响,其实就是想着原来学过的或者看过的可以解决新遇到的问题,这其实是侥幸心理,忘记原来的术语吧,那只是你创新的源泉。 遍历就是把节点按一定规则构成一个线性序列,不同的规则得到不同顺序的线性序列,仅此而已 。 算法是实际问题工作步骤的抽象,不要一味想算法,想想实际...
转载 2015-08-26 09:16:00
266阅读
2评论
# 用Java和ECharts构建树 是一种直观而有效的数据可视化工具,常用于展示分层数据结构和层级关系。在Java中,我们可以结合ECharts来实现的绘制。ECharts是一个强大的开源图表库,支持多种图表类型,包括。本文将介绍如何用Java和ECharts建立,并提供代码示例。 ## 1. 环境准备 在开始之前,确保已经安装了Java开发环境和Maven构建工具。接下
原创 9月前
127阅读
分类 以C4.5分类为例,C4.5分类在每次分枝时,是穷举每一个feature的每一个阈值,找到使得按照feature<=阈值,和feature>阈值分成的两个分枝的熵最大的阈值(熵最大的概念可理解成尽可能每个分枝的男女比例都远离1:1),按照该标准分枝得到两个新节点,用同样方法继续分枝直到所有人都被分入性别唯一的叶子节点,或达到预设的终止条件,若最终叶子节点中的性别不唯
题目点这里#include<iostream>#include<string.h>#include<queue>using namespace std;const int N=100010;int h[N],e[N],idx,ne[N];int d[N];int n,m;bool st[N];int bfs(){ memset(...
原创 2021-07-09 14:46:02
129阅读
#include<iostream>#include<algorithm>#include<string.h>using namespace std;const int N=200010;int e[N],h[N],idx,ne[N];void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=...
原创 2021-07-09 14:46:03
122阅读
2-1    解析 : 根据矩阵直接选边即可。2-1给定有权无向的邻接矩阵如下,其最小生成
原创 2023-05-25 17:06:35
74阅读
  • 1
  • 2
  • 3
  • 4
  • 5