Skip to content

Commit f97d580

Browse files
authored
Merge pull request kdn251#71 from pedroAlba/patch-2
Fix README.md images
2 parents 6269878 + e429abb commit f97d580

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

README.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -98,15 +98,15 @@
9898
* Insert: `O(log(n))`
9999
* Remove: `O(log(n))`
100100

101-
<img src="/Images/BST.png?raw=true" alt="Binary Search Tree" width="400" height="500">
101+
<img src="/images/BST.png?raw=true" alt="Binary Search Tree" width="400" height="500">
102102

103103
### Trie
104104
* A trie, sometimes called a radix or prefix tree, is a kind of search tree that is used to store a dynamic set or associative
105105
array where the keys are usually Strings. No node in the tree stores the key associated with that node; instead, its position
106106
in the tree defines the key with which it is associated. All the descendants of a node have a common prefix of the String associated
107107
with that node, and the root is associated with the empty String.
108108

109-
![Alt text](/Images/trie.png?raw=true "Trie")
109+
![Alt text](/images/trie.png?raw=true "Trie")
110110

111111
### Fenwick Tree
112112
* A Fenwick tree, sometimes called a binary indexed tree, is a tree in concept, but in practice is implemented as an implicit data
@@ -118,7 +118,7 @@
118118
* Range Sum: `O(log(n))`
119119
* Update: `O(log(n))`
120120

121-
![Alt text](/Images/fenwickTree.png?raw=true "Fenwick Tree")
121+
![Alt text](/images/fenwickTree.png?raw=true "Fenwick Tree")
122122

123123
### Segment Tree
124124
* A Segment tree, is a tree data structure for storing intervals, or segments. It allows querying which of the stored segments contain
@@ -127,7 +127,7 @@
127127
* Range Query: `O(log(n))`
128128
* Update: `O(log(n))`
129129

130-
![Alt text](/Images/segmentTree.png?raw=true "Segment Tree")
130+
![Alt text](/images/segmentTree.png?raw=true "Segment Tree")
131131

132132
### Heap
133133
* A *Heap* is a specialized tree based structure data structure that satisfies the *heap* property: if A is a parent node of
@@ -140,7 +140,7 @@ or equal to those of the children and the lowest key is in the root node
140140
* Insert: `O(log(n))`
141141
* Remove Max / Min: `O(log(n))`
142142

143-
<img src="/Images/heap.png?raw=true" alt="Max Heap" width="400" height="500">
143+
<img src="/images/heap.png?raw=true" alt="Max Heap" width="400" height="500">
144144

145145

146146
### Hashing
@@ -156,7 +156,7 @@ or equal to those of the children and the lowest key is in the root node
156156
the fact that the location of an item is not always determined by its hash value
157157

158158

159-
![Alt text](/Images/hash.png?raw=true "Hashing")
159+
![Alt text](/images/hash.png?raw=true "Hashing")
160160

161161
### Graph
162162
* A *Graph* is an ordered pair of G = (V, E) comprising a set V of vertices or nodes together with a set E of edges or arcs,
@@ -168,7 +168,7 @@ or equal to those of the children and the lowest key is in the root node
168168
(u -> v), this does *not* imply that there exists an edge from node v to node u (v -> u)
169169

170170

171-
<img src="/Images/graph.png?raw=true" alt="Graph" width="400" height="500">
171+
<img src="/images/graph.png?raw=true" alt="Graph" width="400" height="500">
172172

173173
## Algorithms
174174

@@ -181,7 +181,7 @@ or equal to those of the children and the lowest key is in the root node
181181
* Worst Case: `O(n^2)`
182182
* Average Case: `O(nlog(n))`
183183

184-
![Alt text](/Images/quicksort.gif?raw=true "Quicksort")
184+
![Alt text](/images/quicksort.gif?raw=true "Quicksort")
185185

186186
#### Mergesort
187187
* *Mergesort* is also a divide and conquer algorithm. It continuously divides an array into two halves, recurses on both the
@@ -192,7 +192,7 @@ or equal to those of the children and the lowest key is in the root node
192192
* Worst Case: `O(nlog(n))`
193193
* Average Case: `O(nlog(n))`
194194

195-
![Alt text](/Images/mergesort.gif?raw=true "Mergesort")
195+
![Alt text](/images/mergesort.gif?raw=true "Mergesort")
196196

197197
#### Bucket Sort
198198
* *Bucket Sort* is a sorting algorithm that works by distributing the elements of an array into a number of buckets. Each bucket
@@ -202,7 +202,7 @@ or equal to those of the children and the lowest key is in the root node
202202
* Worst Case: `O(n^2)`
203203
* Average Case:`Θ(n + k)`
204204

205-
![Alt text](/Images/bucketsort.png?raw=true "Bucket Sort")
205+
![Alt text](/images/bucketsort.png?raw=true "Bucket Sort")
206206

207207
#### Radix Sort
208208
* *Radix Sort* is a sorting algorithm that like bucket sort, distributes elements of an array into a number of buckets. However, radix
@@ -218,14 +218,14 @@ or equal to those of the children and the lowest key is in the root node
218218
* *Depth First Search* is a graph traversal algorithm which explores as far as possible along each branch before backtracking
219219
* Time Complexity: `O(|V| + |E|)`
220220

221-
![Alt text](/Images/dfsbfs.gif?raw=true "DFS / BFS Traversal")
221+
![Alt text](/images/dfsbfs.gif?raw=true "DFS / BFS Traversal")
222222

223223
#### Breadth First Search
224224
* *Breadth First Search* is a graph traversal algorithm which explores the neighbor nodes first, before moving to the next
225225
level neighbors
226226
* Time Complexity: `O(|V| + |E|)`
227227

228-
![Alt text](/Images/dfsbfs.gif?raw=true "DFS / BFS Traversal")
228+
![Alt text](/images/dfsbfs.gif?raw=true "DFS / BFS Traversal")
229229

230230
#### Topological Sort
231231
* *Topological Sort* is the linear ordering of a directed graph's nodes such that for every edge from node u to node v, u
@@ -236,7 +236,7 @@ or equal to those of the children and the lowest key is in the root node
236236
* *Dijkstra's Algorithm* is an algorithm for finding the shortest path between nodes in a graph
237237
* Time Complexity: `O(|V|^2)`
238238

239-
![Alt text](/Images/dijkstra.gif?raw=true "Dijkstra's")
239+
![Alt text](/images/dijkstra.gif?raw=true "Dijkstra's")
240240

241241
#### Bellman-Ford Algorithm
242242
* *Bellman-Ford Algorithm* is an algorithm that computes the shortest paths from a single source node to all other nodes in a weighted graph
@@ -246,7 +246,7 @@ or equal to those of the children and the lowest key is in the root node
246246
* Best Case: `O(|E|)`
247247
* Worst Case: `O(|V||E|)`
248248

249-
![Alt text](/Images/bellman-ford.gif?raw=true "Bellman-Ford")
249+
![Alt text](/images/bellman-ford.gif?raw=true "Bellman-Ford")
250250

251251
#### Floyd-Warshall Algorithm
252252
* *Floyd-Warshall Algorithm* is an algorithm for finding the shortest paths in a weighted graph with positive or negative edge weights, but
@@ -262,14 +262,14 @@ or equal to those of the children and the lowest key is in the root node
262262
subset of edges that forms a tree that includes every node in the graph
263263
* Time Complexity: `O(|V|^2)`
264264

265-
![Alt text](/Images/prim.gif?raw=true "Prim's Algorithm")
265+
![Alt text](/images/prim.gif?raw=true "Prim's Algorithm")
266266

267267
#### Kruskal's Algorithm
268268
* *Kruskal's Algorithm* is also a greedy algorithm that finds a minimum spanning tree in a graph. However, in Kruskal's, the graph does not
269269
have to be connected
270270
* Time Complexity: `O(|E|log|V|)`
271271

272-
![Alt text](/Images/kruskal.gif?raw=true "Kruskal's Algorithm")
272+
![Alt text](/images/kruskal.gif?raw=true "Kruskal's Algorithm")
273273

274274
## Greedy Algorithms
275275
* *Greedy Algorithms* are algorithms that make locally optimal choices at each step in the hope of eventually reaching the globally optimal solution
@@ -317,7 +317,7 @@ or equal to those of the children and the lowest key is in the root node
317317
#### Big O Notation
318318
* *Big O Notation* is used to describe the upper bound of a particular algorithm. Big O is used to describe worst case scenarios
319319

320-
![Alt text](/Images/bigO.png?raw=true "Theta Notation")
320+
![Alt text](/images/bigO.png?raw=true "Theta Notation")
321321

322322
#### Little O Notation
323323
* *Little O Notation* is also used to describe an upper bound of a particular algorithm; however, Little O provides a bound
@@ -326,7 +326,7 @@ or equal to those of the children and the lowest key is in the root node
326326
#### Big Ω Omega Notation
327327
* *Big Omega Notation* is used to provide an asymptotic lower bound on a particular algorithm
328328

329-
![Alt text](/Images/bigOmega.png?raw=true "Theta Notation")
329+
![Alt text](/images/bigOmega.png?raw=true "Theta Notation")
330330

331331
#### Little ω Omega Notation
332332
* *Little Omega Notation* is used to provide a lower bound on a particular algorithm that is not asymptotically tight
@@ -335,7 +335,7 @@ or equal to those of the children and the lowest key is in the root node
335335
* *Theta Notation* is used to provide a bound on a particular algorithm such that it can be "sandwiched" between
336336
two constants (one for an upper limit and one for a lower limit) for sufficiently large values
337337

338-
![Alt text](/Images/theta.png?raw=true "Theta Notation")
338+
![Alt text](/images/theta.png?raw=true "Theta Notation")
339339

340340
## Video Lectures
341341
* Data Structures

0 commit comments

Comments
 (0)