<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://charlesreid1.com/w/index.php?action=history&amp;feed=atom&amp;title=Introduction_to_Graph_Theory%2FTrees_and_Distance</id>
	<title>Introduction to Graph Theory/Trees and Distance - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://charlesreid1.com/w/index.php?action=history&amp;feed=atom&amp;title=Introduction_to_Graph_Theory%2FTrees_and_Distance"/>
	<link rel="alternate" type="text/html" href="https://charlesreid1.com/w/index.php?title=Introduction_to_Graph_Theory/Trees_and_Distance&amp;action=history"/>
	<updated>2026-06-16T09:26:33Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.12</generator>
	<entry>
		<id>https://charlesreid1.com/w/index.php?title=Introduction_to_Graph_Theory/Trees_and_Distance&amp;diff=30562&amp;oldid=prev</id>
		<title>Admin: Create page from Chapter 2 notes on Trees and Distance (via create-page on MediaWiki MCP Server)</title>
		<link rel="alternate" type="text/html" href="https://charlesreid1.com/w/index.php?title=Introduction_to_Graph_Theory/Trees_and_Distance&amp;diff=30562&amp;oldid=prev"/>
		<updated>2026-06-14T19:09:52Z</updated>

		<summary type="html">&lt;p&gt;Create page from Chapter 2 notes on Trees and Distance (via create-page on MediaWiki MCP Server)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Chapter 2: Trees and Distance&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Source: [[Introduction to Graph Theory]], 2nd Edition, by Douglas B. West&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
Chapter 2 of West&amp;#039;s &amp;#039;&amp;#039;Introduction to Graph Theory&amp;#039;&amp;#039; develops the theory of trees, one of the most fundamental structures in graph theory. Trees arise naturally in applications involving data storage, searching, communication networks, and optimization. The chapter is organized into three sections: basic structural properties and distance concepts (2.1), enumeration and counting of spanning trees (2.2), and optimization problems involving trees such as minimum spanning trees and shortest paths (2.3).&lt;br /&gt;
&lt;br /&gt;
==2.1 Basic Properties==&lt;br /&gt;
&lt;br /&gt;
===Definitions===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Acyclic graph&amp;#039;&amp;#039;&amp;#039;: A graph with no cycle.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Forest&amp;#039;&amp;#039;&amp;#039;: An acyclic graph.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Tree&amp;#039;&amp;#039;&amp;#039;: A connected acyclic graph.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Leaf (pendant vertex)&amp;#039;&amp;#039;&amp;#039;: A vertex of degree 1.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Spanning subgraph&amp;#039;&amp;#039;&amp;#039;: A subgraph of G with vertex set V(G).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Spanning tree&amp;#039;&amp;#039;&amp;#039;: A spanning subgraph that is a tree.&lt;br /&gt;
&lt;br /&gt;
Examples: A tree is a connected forest, and every component of a forest is a tree. Paths are trees; a tree is a path if and only if its maximum degree is 2. A &amp;#039;&amp;#039;&amp;#039;star&amp;#039;&amp;#039;&amp;#039; is a tree consisting of one vertex adjacent to all others (the biclique K&amp;lt;sub&amp;gt;1,n-1&amp;lt;/sub&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
===Properties of Trees===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lemma 2.1.3.&amp;#039;&amp;#039;&amp;#039; Every tree with at least two vertices has at least two leaves. Deleting a leaf from an n-vertex tree produces a tree with n − 1 vertices.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Theorem 2.1.4 (Characterization of Trees).&amp;#039;&amp;#039;&amp;#039; For an n-vertex graph G (with n ≥ 1), the following are equivalent (and characterize trees):&lt;br /&gt;
&lt;br /&gt;
* A) G is connected and has no cycles.&lt;br /&gt;
* B) G is connected and has n − 1 edges.&lt;br /&gt;
* C) G has n − 1 edges and no cycles.&lt;br /&gt;
* D) For every u, v in V(G), G has exactly one u,v-path.&lt;br /&gt;
&lt;br /&gt;
This is one of the most important results in the chapter. Any two of the three properties {connected, acyclic, n − 1 edges} imply the third.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Corollary 2.1.5.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* (a) Every edge of a tree is a cut-edge.&lt;br /&gt;
* (b) Adding one edge to a tree forms exactly one cycle.&lt;br /&gt;
* (c) Every connected graph contains a spanning tree.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Proposition 2.1.6 (Edge exchange in spanning trees).&amp;#039;&amp;#039;&amp;#039; If T, T&amp;#039; are spanning trees of a connected graph G and e is in E(T) − E(T&amp;#039;), then there exists an edge e&amp;#039; in E(T&amp;#039;) − E(T) such that T − e + e&amp;#039; is a spanning tree.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Proposition 2.1.7.&amp;#039;&amp;#039;&amp;#039; The symmetric version: if e is in E(T) − E(T&amp;#039;), there exists e&amp;#039; in E(T&amp;#039;) − E(T) such that T&amp;#039; + e − e&amp;#039; is also a spanning tree.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Proposition 2.1.8.&amp;#039;&amp;#039;&amp;#039; If T is a tree with k edges and G is a simple graph with minimum degree δ(G) ≥ k, then T is a subgraph of G. This means that graphs with sufficiently high minimum degree contain all small trees as subgraphs.&lt;br /&gt;
&lt;br /&gt;
===Distance in Trees and Graphs===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Definition 2.1.9.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Distance&amp;#039;&amp;#039;&amp;#039; d(u,v): The least length of a u,v-path (infinity if no such path exists).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Diameter&amp;#039;&amp;#039;&amp;#039; diam(G): max over all u,v of d(u,v).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Eccentricity&amp;#039;&amp;#039;&amp;#039; ε(u): max over all v of d(u,v).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Radius&amp;#039;&amp;#039;&amp;#039; rad(G): min over all u of ε(u).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 2.1.10.&amp;#039;&amp;#039;&amp;#039; The Petersen graph has diameter 2. The hypercube Q&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; has diameter k. The cycle C&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; has diameter ⌊n/2⌋. For n ≥ 3, the n-vertex tree of least diameter is the star (diameter 2, radius 1), and the one of largest diameter is the path (diameter n − 1, radius ⌈(n−1)/2⌉).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Theorem 2.1.11.&amp;#039;&amp;#039;&amp;#039; If G is a simple graph with diam(G) ≥ 3, then diam(G̅) ≤ 3 (where G̅ is the complement of G).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Definition 2.1.12.&amp;#039;&amp;#039;&amp;#039; The &amp;#039;&amp;#039;&amp;#039;center&amp;#039;&amp;#039;&amp;#039; of a graph G is the subgraph induced by the vertices of minimum eccentricity.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Theorem 2.1.13 (Jordan, 1869).&amp;#039;&amp;#039;&amp;#039; The center of a tree is a vertex or an edge. The proof uses induction: deleting all leaves preserves the center, and the process reduces the tree until one or two vertices remain.&lt;br /&gt;
&lt;br /&gt;
===Wiener Index===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Definition.&amp;#039;&amp;#039;&amp;#039; The &amp;#039;&amp;#039;&amp;#039;Wiener index&amp;#039;&amp;#039;&amp;#039; D(G) = sum of d(u,v) over all pairs u,v. This quantity has applications in chemistry (studying boiling points of paraffin molecules).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Theorem 2.1.14.&amp;#039;&amp;#039;&amp;#039; Among trees with n vertices, the Wiener index D(T) is:&lt;br /&gt;
* Minimized uniquely by the star K&amp;lt;sub&amp;gt;1,n−1&amp;lt;/sub&amp;gt;, with value (n−1)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
* Maximized uniquely by the path P&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;, with value C(n+1, 3).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lemma 2.1.15.&amp;#039;&amp;#039;&amp;#039; If H is a subgraph of G, then d&amp;lt;sub&amp;gt;G&amp;lt;/sub&amp;gt;(u,v) ≤ d&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;(u,v) for all u, v.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Corollary 2.1.16.&amp;#039;&amp;#039;&amp;#039; If G is a connected n-vertex graph, then D(G) ≤ D(P&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
===Disjoint Spanning Trees (optional)===&lt;br /&gt;
&lt;br /&gt;
Edge-disjoint spanning trees provide alternate routes when an edge in the primary tree fails. The section discusses the Tutte [1961a] and Nash-Williams [1961] characterization of graphs having k pairwise edge-disjoint spanning trees.&lt;br /&gt;
&lt;br /&gt;
An application to the game &amp;#039;&amp;#039;&amp;#039;Bridg-it&amp;#039;&amp;#039;&amp;#039; is presented:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Theorem 2.1.17.&amp;#039;&amp;#039;&amp;#039; Player 1 has a winning strategy in Bridg-it. The proof uses the existence of two edge-disjoint spanning trees and Proposition 2.1.6 to show that Player 1 can always reconnect after Player 2&amp;#039;s cuts.&lt;br /&gt;
&lt;br /&gt;
==2.2 Spanning Trees and Enumeration==&lt;br /&gt;
&lt;br /&gt;
===Enumeration of Trees===&lt;br /&gt;
&lt;br /&gt;
The section addresses the counting question: among the 2&amp;lt;sup&amp;gt;C(n,2)&amp;lt;/sup&amp;gt; simple graphs with vertex set [n], how many are trees?&lt;br /&gt;
&lt;br /&gt;
With small vertex sets: vertex set [3] yields 3 trees, [4] yields 16 trees, [5] yields 125 trees. The pattern is n&amp;lt;sup&amp;gt;n−2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cayley&amp;#039;s Formula (Theorem 2.2.3, 1889).&amp;#039;&amp;#039;&amp;#039; For a set S of size n in the natural numbers, there are n&amp;lt;sup&amp;gt;n−2&amp;lt;/sup&amp;gt; trees with vertex set S.&lt;br /&gt;
&lt;br /&gt;
The proof uses &amp;#039;&amp;#039;&amp;#039;Prüfer codes&amp;#039;&amp;#039;&amp;#039;, establishing a bijection between labeled trees on n vertices and sequences of length n − 2 from the vertex set.&lt;br /&gt;
&lt;br /&gt;
===Prüfer Code===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Algorithm 2.2.1 (Prüfer code production).&amp;#039;&amp;#039;&amp;#039; Given a tree T with vertex set S:&lt;br /&gt;
* At each step, delete the least remaining leaf and record the neighbor of that leaf.&lt;br /&gt;
* After n − 2 iterations, a list f(T) = (a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, ..., a&amp;lt;sub&amp;gt;n−2&amp;lt;/sub&amp;gt;) of length n − 2 is produced.&lt;br /&gt;
&lt;br /&gt;
The code can be reversed to reconstruct the tree: starting with the set S of isolated vertices, edges are added one at a time using the code entries and the current set of unmarked vertices.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Corollary 2.2.4.&amp;#039;&amp;#039;&amp;#039; Given positive integers d&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, ..., d&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; summing to 2n − 2, there are exactly (n−2)! / Π((d&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; − 1)!) trees with vertex set [n] such that vertex i has degree d&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;. This follows because vertex x appears d&amp;lt;sub&amp;gt;T&amp;lt;/sub&amp;gt;(x) − 1 times in the Prüfer code.&lt;br /&gt;
&lt;br /&gt;
===Spanning Trees in Graphs===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Definition 2.2.7 (Contraction).&amp;#039;&amp;#039;&amp;#039; Contraction of edge e with endpoints u, v replaces u and v with a single vertex whose incident edges are the edges other than e that were incident to u or v.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Proposition 2.2.8 (Deletion-Contraction Recurrence).&amp;#039;&amp;#039;&amp;#039; Let τ(G) denote the number of spanning trees of G. If e in E(G) is not a loop, then:&lt;br /&gt;
&lt;br /&gt;
:τ(G) = τ(G − e) + τ(G · e)&lt;br /&gt;
&lt;br /&gt;
where G − e is edge deletion and G · e is edge contraction. This gives a recursive method for computing spanning tree counts.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Remark 2.2.10.&amp;#039;&amp;#039;&amp;#039; If G is a connected loopless graph with no cycle of length at least 3, then τ(G) is the product of the edge multiplicities.&lt;br /&gt;
&lt;br /&gt;
===The Matrix Tree Theorem===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Theorem 2.2.12 (Matrix Tree Theorem, Kirchhoff 1847).&amp;#039;&amp;#039;&amp;#039; Given a loopless graph G with vertex set v&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, ..., v&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;, let a&amp;lt;sub&amp;gt;i,j&amp;lt;/sub&amp;gt; be the number of edges with endpoints v&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; and v&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;. Let Q be the matrix in which entry (i,j) is −a&amp;lt;sub&amp;gt;i,j&amp;lt;/sub&amp;gt; when i ≠ j and is d(v&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;) when i = j. If Q* is a matrix obtained by deleting row s and column t of Q, then:&lt;br /&gt;
&lt;br /&gt;
:τ(G) = (−1)&amp;lt;sup&amp;gt;s+t&amp;lt;/sup&amp;gt; det(Q*)&lt;br /&gt;
&lt;br /&gt;
The proof proceeds in two steps:&lt;br /&gt;
# If D is an orientation of G and M is the incidence matrix, then Q = MM&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;.&lt;br /&gt;
# Every (n−1)-by-(n−1) submatrix B of M corresponding to n − 1 edges forms a spanning tree if and only if det(B) = ±1; otherwise det(B) = 0.&lt;br /&gt;
&lt;br /&gt;
The Matrix Tree Theorem provides a computationally efficient method (O(n&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;)) for counting spanning trees, since determinants of n-by-n matrices can be computed in polynomial time.&lt;br /&gt;
&lt;br /&gt;
===Graceful Labelings (optional)===&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;graceful labeling&amp;#039;&amp;#039;&amp;#039; of a graph G with m edges assigns distinct labels from {0, 1, ..., m} to the vertices so that the induced edge labels |f(u) − f(v)| are distinct (and hence are exactly {1, 2, ..., m}).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The Graceful Tree Conjecture (Ringel–Kotzig Conjecture):&amp;#039;&amp;#039;&amp;#039; Every tree has a graceful labeling. This remains one of the major open problems in graph theory. It has been verified for many special classes of trees (paths, caterpillars, trees with at most 4 leaves, trees with at most 27 vertices) but the general case remains open.&lt;br /&gt;
&lt;br /&gt;
A graceful labeling of K&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; decomposes K&amp;lt;sub&amp;gt;2n+1&amp;lt;/sub&amp;gt; into 2n + 1 copies of the tree, providing a connection to decomposition problems.&lt;br /&gt;
&lt;br /&gt;
==2.3 Optimization and Trees==&lt;br /&gt;
&lt;br /&gt;
===Minimum Spanning Trees===&lt;br /&gt;
&lt;br /&gt;
When edges of a graph carry weights (costs), a natural optimization problem is to find a spanning tree of minimum total weight.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Definition.&amp;#039;&amp;#039;&amp;#039; Given a weighted connected graph G with edge weights w: E(G) → ℝ, the &amp;#039;&amp;#039;&amp;#039;minimum spanning tree (MST)&amp;#039;&amp;#039;&amp;#039; is a spanning tree T that minimizes the total weight sum of w(e) over all e in E(T).&lt;br /&gt;
&lt;br /&gt;
Two classical greedy algorithms solve this problem:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kruskal&amp;#039;s Algorithm (1956):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Sort the edges by weight in nondecreasing order.&lt;br /&gt;
# Consider edges one at a time; add the current edge to the tree if it does not create a cycle with previously selected edges.&lt;br /&gt;
# Stop when n − 1 edges have been selected.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Prim&amp;#039;s Algorithm (1957):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Start from any vertex s.&lt;br /&gt;
# At each step, add the minimum-weight edge connecting the current tree to a vertex not yet in the tree.&lt;br /&gt;
# Continue until all vertices are included.&lt;br /&gt;
&lt;br /&gt;
Both algorithms produce a minimum spanning tree and run efficiently: Kruskal&amp;#039;s in O(m log n) and Prim&amp;#039;s in O(m + n log n) with appropriate data structures.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Theorem.&amp;#039;&amp;#039;&amp;#039; An edge e belongs to some minimum spanning tree if and only if e is not the unique heaviest edge in some cycle of G.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Theorem.&amp;#039;&amp;#039;&amp;#039; If all edge weights are distinct, the minimum spanning tree is unique.&lt;br /&gt;
&lt;br /&gt;
===Shortest Paths===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Definition.&amp;#039;&amp;#039;&amp;#039; The &amp;#039;&amp;#039;&amp;#039;weighted distance&amp;#039;&amp;#039;&amp;#039; from u to v in a weighted graph is the minimum total weight of a u,v-path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dijkstra&amp;#039;s Algorithm (1959):&amp;#039;&amp;#039;&amp;#039; Finds shortest paths from a single source vertex s to all other vertices in a graph with nonnegative edge weights.&lt;br /&gt;
&lt;br /&gt;
# Initialize d(s) = 0 and d(v) = ∞ for all other vertices.&lt;br /&gt;
# Maintain a set S of vertices whose shortest distance is known.&lt;br /&gt;
# At each step, add to S the vertex u not in S with smallest d(u).&lt;br /&gt;
# Update distances: for each neighbor v of u, set d(v) = min(d(v), d(u) + w(u,v)).&lt;br /&gt;
&lt;br /&gt;
Dijkstra&amp;#039;s algorithm runs in O(n&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) with a simple implementation or O(m + n log n) with a Fibonacci heap.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Chinese Postman Problem:&amp;#039;&amp;#039;&amp;#039; Find a closed walk of minimum total weight that traverses every edge at least once. For Eulerian graphs, the answer is the total weight of all edges. For non-Eulerian graphs, one must duplicate some edges; the optimal solution involves finding a minimum-weight perfect matching on the vertices of odd degree.&lt;br /&gt;
&lt;br /&gt;
===Network Flows and Trees===&lt;br /&gt;
&lt;br /&gt;
The relationship between trees and network optimization extends to problems involving flows, cuts, and connectivity. Trees provide the structural foundation for many network algorithms, and spanning tree structures appear in the simplex method for network flow problems.&lt;br /&gt;
&lt;br /&gt;
==Summary of Key Results==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;table wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Significance&lt;br /&gt;
|-&lt;br /&gt;
| Theorem 2.1.4 (Tree characterization) || Four equivalent definitions of trees; any two of {connected, acyclic, n−1 edges} imply the third&lt;br /&gt;
|-&lt;br /&gt;
| Theorem 2.1.13 (Jordan) || Center of a tree is a vertex or an edge&lt;br /&gt;
|-&lt;br /&gt;
| Theorem 2.1.14 (Wiener index extremes) || Star minimizes and path maximizes the sum of distances&lt;br /&gt;
|-&lt;br /&gt;
| Theorem 2.2.3 (Cayley&amp;#039;s Formula) || n&amp;lt;sup&amp;gt;n−2&amp;lt;/sup&amp;gt; labeled trees on n vertices, proved via Prüfer code bijection&lt;br /&gt;
|-&lt;br /&gt;
| Theorem 2.2.12 (Matrix Tree Theorem) || Number of spanning trees equals any cofactor of the Laplacian matrix&lt;br /&gt;
|-&lt;br /&gt;
| Proposition 2.2.8 (Deletion-contraction) || τ(G) = τ(G−e) + τ(G·e), a recursive counting method&lt;br /&gt;
|-&lt;br /&gt;
| Kruskal&amp;#039;s and Prim&amp;#039;s Algorithms || Greedy algorithms correctly find minimum spanning trees&lt;br /&gt;
|-&lt;br /&gt;
| Dijkstra&amp;#039;s Algorithm || Efficient single-source shortest path algorithm for nonnegative weights&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Flags=&lt;br /&gt;
&lt;br /&gt;
{{ReadingFlag}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>