Products
  • Wolfram|One

    The definitive Wolfram Language and notebook experience

  • Mathematica

    The original technical computing environment

  • Wolfram Notebook Assistant + LLM Kit

    All-in-one AI assistance for your Wolfram experience

  • System Modeler
  • Wolfram Player
  • Finance Platform
  • Wolfram Engine
  • Enterprise Private Cloud
  • Application Server
  • Wolfram|Alpha Notebook Edition
  • Wolfram Cloud App
  • Wolfram Player App

More mobile apps

Core Technologies of Wolfram Products

  • Wolfram Language
  • Computable Data
  • Wolfram Notebooks
  • AI & Linguistic Understanding

Deployment Options

  • Wolfram Cloud
  • wolframscript
  • Wolfram Engine Community Edition
  • Wolfram LLM API
  • WSTPServer
  • Wolfram|Alpha APIs

From the Community

  • Function Repository
  • Community Paclet Repository
  • Example Repository
  • Neural Net Repository
  • Prompt Repository
  • Wolfram Demonstrations
  • Data Repository
  • Group & Organizational Licensing
  • All Products
Consulting & Solutions

We deliver solutions for the AI era—combining symbolic computation, data-driven insights and deep technical expertise

  • Data & Computational Intelligence
  • Model-Based Design
  • Algorithm Development
  • Wolfram|Alpha for Business
  • Blockchain Technology
  • Education Technology
  • Quantum Computation

WolframConsulting.com

Wolfram Solutions

  • Data Science
  • Artificial Intelligence
  • Biosciences
  • Healthcare Intelligence
  • Sustainable Energy
  • Control Systems
  • Enterprise Wolfram|Alpha
  • Blockchain Labs

More Wolfram Solutions

Wolfram Solutions For Education

  • Research Universities
  • Colleges & Teaching Universities
  • Junior & Community Colleges
  • High Schools
  • Educational Technology
  • Computer-Based Math

More Solutions for Education

  • Contact Us
Learning & Support

Get Started

  • Wolfram Language Introduction
  • Fast Intro for Programmers
  • Fast Intro for Math Students
  • Wolfram Language Documentation

More Learning

  • Highlighted Core Areas
  • Demonstrations
  • YouTube
  • Daily Study Groups
  • Wolfram Schools and Programs
  • Books

Grow Your Skills

  • Wolfram U

    Courses in computing, science, life and more

  • Community

    Learn, solve problems and share ideas.

  • Blog

    News, views and insights from Wolfram

  • Resources for

    Software Developers

Tech Support

  • Contact Us
  • Support FAQs
  • Support FAQs
  • Contact Us
Company
  • About Wolfram
  • Career Center
  • All Sites & Resources
  • Connect & Follow
  • Contact Us

Work with Us

  • Student Ambassador Initiative
  • Wolfram for Startups
  • Student Opportunities
  • Jobs Using Wolfram Language

Educational Programs for Adults

  • Summer School
  • Winter School

Educational Programs for Youth

  • Middle School Camp
  • High School Research Program
  • Computational Adventures

Read

  • Stephen Wolfram's Writings
  • Wolfram Blog
  • Wolfram Tech | Books
  • Wolfram Media
  • Complex Systems

Educational Resources

  • Wolfram MathWorld
  • Wolfram in STEM/STEAM
  • Wolfram Challenges
  • Wolfram Problem Generator

Wolfram Initiatives

  • Wolfram Science
  • Wolfram Foundation
  • History of Mathematics Project

Events

  • Stephen Wolfram Livestreams
  • Online & In-Person Events
  • Contact Us
  • Connect & Follow
Wolfram|Alpha
  • Your Account
  • User Portal
  • Wolfram Cloud
  • Products
    • Wolfram|One
    • Mathematica
    • Wolfram Notebook Assistant + LLM Kit
    • System Modeler
    • Wolfram Player
    • Finance Platform
    • Wolfram|Alpha Notebook Edition
    • Wolfram Engine
    • Enterprise Private Cloud
    • Application Server
    • Wolfram Cloud App
    • Wolfram Player App

    More mobile apps

    • Core Technologies
      • Wolfram Language
      • Computable Data
      • Wolfram Notebooks
      • AI & Linguistic Understanding
    • Deployment Options
      • Wolfram Cloud
      • wolframscript
      • Wolfram Engine Community Edition
      • Wolfram LLM API
      • WSTPServer
      • Wolfram|Alpha APIs
    • From the Community
      • Function Repository
      • Community Paclet Repository
      • Example Repository
      • Neural Net Repository
      • Prompt Repository
      • Wolfram Demonstrations
      • Data Repository
    • Group & Organizational Licensing
    • All Products
  • Consulting & Solutions

    We deliver solutions for the AI era—combining symbolic computation, data-driven insights and deep technical expertise

    WolframConsulting.com

    Wolfram Solutions

    • Data Science
    • Artificial Intelligence
    • Biosciences
    • Healthcare Intelligence
    • Sustainable Energy
    • Control Systems
    • Enterprise Wolfram|Alpha
    • Blockchain Labs

    More Wolfram Solutions

    Wolfram Solutions For Education

    • Research Universities
    • Colleges & Teaching Universities
    • Junior & Community Colleges
    • High Schools
    • Educational Technology
    • Computer-Based Math

    More Solutions for Education

    • Contact Us
  • Learning & Support

    Get Started

    • Wolfram Language Introduction
    • Fast Intro for Programmers
    • Fast Intro for Math Students
    • Wolfram Language Documentation

    Grow Your Skills

    • Wolfram U

      Courses in computing, science, life and more

    • Community

      Learn, solve problems and share ideas.

    • Blog

      News, views and insights from Wolfram

    • Resources for

      Software Developers
    • Tech Support
      • Contact Us
      • Support FAQs
    • More Learning
      • Highlighted Core Areas
      • Demonstrations
      • YouTube
      • Daily Study Groups
      • Wolfram Schools and Programs
      • Books
    • Support FAQs
    • Contact Us
  • Company
    • About Wolfram
    • Career Center
    • All Sites & Resources
    • Connect & Follow
    • Contact Us

    Work with Us

    • Student Ambassador Initiative
    • Wolfram for Startups
    • Student Opportunities
    • Jobs Using Wolfram Language

    Educational Programs for Adults

    • Summer School
    • Winter School

    Educational Programs for Youth

    • Middle School Camp
    • High School Research Program
    • Computational Adventures

    Read

    • Stephen Wolfram's Writings
    • Wolfram Blog
    • Wolfram Tech | Books
    • Wolfram Media
    • Complex Systems
    • Educational Resources
      • Wolfram MathWorld
      • Wolfram in STEM/STEAM
      • Wolfram Challenges
      • Wolfram Problem Generator
    • Wolfram Initiatives
      • Wolfram Science
      • Wolfram Foundation
      • History of Mathematics Project
    • Events
      • Stephen Wolfram Livestreams
      • Online & In-Person Events
    • Contact Us
    • Connect & Follow
  • Wolfram|Alpha
  • Wolfram Cloud
  • Your Account
  • User Portal
Wolfram Language & System Documentation Center
FindSpanningTree
  • See Also
    • FindShortestTour
    • FindHamiltonianPath
    • FindShortestPath
    • FindPath
    • FindPostmanTour
    • FindEulerianCycle
    • DepthFirstScan
    • BreadthFirstScan
    • TreeGraph
    • DominatorTreeGraph
    • LinearOptimization
  • Related Guides
    • Graph Operations and Modifications
    • Discrete Mathematics
    • Spatial Point Collections
    • Tree Construction & Representation
    • See Also
      • FindShortestTour
      • FindHamiltonianPath
      • FindShortestPath
      • FindPath
      • FindPostmanTour
      • FindEulerianCycle
      • DepthFirstScan
      • BreadthFirstScan
      • TreeGraph
      • DominatorTreeGraph
      • LinearOptimization
    • Related Guides
      • Graph Operations and Modifications
      • Discrete Mathematics
      • Spatial Point Collections
      • Tree Construction & Representation

FindSpanningTree[{v1,v2,…,vn}]

finds a spanning tree that minimizes the total distance between the vi.

FindSpanningTree[g]

finds a spanning tree of the graph g that minimizes the total distances between vertices.

FindSpanningTree[{g,v},…]

finds a spanning tree of the connected component of g that includes the vertex v.

FindSpanningTree[{vw,…},…]

uses rules vw to specify the graph g.

Details and Options
Details and Options Details and Options
Examples  
Basic Examples  
Scope  
Generalizations & Extensions  
Options  
EdgeWeight  
Method  
Applications  
Properties & Relations  
Possible Issues  
Neat Examples  
See Also
Related Guides
History
Cite this Page
BUILT-IN SYMBOL
  • See Also
    • FindShortestTour
    • FindHamiltonianPath
    • FindShortestPath
    • FindPath
    • FindPostmanTour
    • FindEulerianCycle
    • DepthFirstScan
    • BreadthFirstScan
    • TreeGraph
    • DominatorTreeGraph
    • LinearOptimization
  • Related Guides
    • Graph Operations and Modifications
    • Discrete Mathematics
    • Spatial Point Collections
    • Tree Construction & Representation
    • See Also
      • FindShortestTour
      • FindHamiltonianPath
      • FindShortestPath
      • FindPath
      • FindPostmanTour
      • FindEulerianCycle
      • DepthFirstScan
      • BreadthFirstScan
      • TreeGraph
      • DominatorTreeGraph
      • LinearOptimization
    • Related Guides
      • Graph Operations and Modifications
      • Discrete Mathematics
      • Spatial Point Collections
      • Tree Construction & Representation

FindSpanningTree

FindSpanningTree[{v1,v2,…,vn}]

finds a spanning tree that minimizes the total distance between the vi.

FindSpanningTree[g]

finds a spanning tree of the graph g that minimizes the total distances between vertices.

FindSpanningTree[{g,v},…]

finds a spanning tree of the connected component of g that includes the vertex v.

FindSpanningTree[{vw,…},…]

uses rules vw to specify the graph g.

Details and Options

  • FindSpanningTree is also known as minimum spanning tree and spanning forest.
  • Typically used to find optimal connections without cycles.
  • FindSpanningTree[{v1,…,vn}] gives a spanning tree of the complete graph with vertices v1,…,vn that minimizes the total distance between the vi.
  • A spanning tree of a connected graph g is a subgraph of g that is a tree and connects all vertices of g.
  • For weighted graphs, FindSpanningTree gives a spanning tree with minimum sum of edge weights.
  • For disconnected graphs, FindSpanningTree gives a subgraph that consists of a spanning tree for each of its connected components.
  • FindSpanningTree has the same options as Graph, with the following additions and changes: [List of all options]
  • DistanceFunctionAutomaticfunction to apply to pairs of objects
    Method Automaticmethod to use
  • The Automatic setting for DistanceFunction includes the following choices:
  • EuclideanDistancenumbers of lists of numbers
    EditDistancestrings
    GeoDistancegeo positions
  • For a graph g, the distance is taken to be GraphDistance.
  • Possible settings for Method include:
  • "Kruskal"support sparse undirected graphs
    "MinimumCostArborescence"support directed graphs
    "Prim"support dense undirected graphs
  • The default setting of Automatic switches among these methods depending on the graph given.
  • List of all options

    • AlignmentPointCenterthe default point in the graphic to align with
      AnnotationRules{}annotations for graph, edges and vertices
      AspectRatioAutomaticratio of height to width
      AxesFalsewhether to draw axes
      AxesLabelNoneaxes labels
      AxesOriginAutomaticwhere axes should cross
      AxesStyle{}style specifications for the axes
      BackgroundNonebackground color for the plot
      BaselinePositionAutomatichow to align with a surrounding text baseline
      BaseStyle{}base style specifications for the graphic
      ContentSelectableAutomaticwhether to allow contents to be selected
      CoordinatesToolOptionsAutomaticdetailed behavior of the coordinates tool
      DirectedEdgesAutomaticwhether to interpret Rule as DirectedEdge
      DistanceFunctionAutomaticfunction to apply to pairs of objects
      EdgeLabelsNonelabels and label placements for edges
      EdgeLabelStyleAutomaticstyle to use for edge labels
      EdgeShapeFunctionAutomaticgenerate graphic shapes for edges
      EdgeStyleAutomaticstyle used for edges
      EdgeWeightAutomaticweights for edges
      Epilog{}primitives rendered after the main plot
      FormatTypeTraditionalFormthe default format type for text
      FrameFalsewhether to put a frame around the plot
      FrameLabelNoneframe labels
      FrameStyle{}style specifications for the frame
      FrameTicksAutomaticframe ticks
      FrameTicksStyle{}style specifications for frame ticks
      GraphHighlight{}graph elements to highlight
      GraphHighlightStyleAutomaticstyle for highlight
      GraphLayoutAutomatichow to lay out vertices and edges
      GridLinesNonegrid lines to draw
      GridLinesStyle{}style specifications for grid lines
      ImageMargins0.the margins to leave around the graphic
      ImagePaddingAllwhat extra padding to allow for labels etc.
      ImageSizeAutomaticthe absolute size at which to render the graphic
      LabelStyle{}style specifications for labels
      MethodAutomaticmethod to use
      PerformanceGoalAutomaticaspects of performance to try to optimize
      PlotLabelNonean overall label for the plot
      PlotRangeAllrange of values to include
      PlotRangeClippingFalsewhether to clip at the plot range
      PlotRangePaddingAutomatichow much to pad the range of values
      PlotRegionAutomaticthe final display region to be filled
      PlotTheme$PlotThemeoverall theme for the graph
      PreserveImageOptionsAutomaticwhether to preserve image options when displaying new versions of the same graphic
      Prolog{}primitives rendered before the main plot
      RotateLabelTruewhether to rotate y labels on the frame
      TicksAutomaticaxes ticks
      TicksStyle{}style specifications for axes ticks
      VertexCoordinatesAutomaticcoordinates for vertices
      VertexLabelsNonelabels and placements for vertices
      VertexLabelStyleAutomaticstyle to use for vertex labels
      VertexShapeAutomaticgraphic shape for vertices
      VertexShapeFunctionAutomaticgenerate graphic shapes for vertices
      VertexSizeMediumsize of vertices
      VertexStyleAutomaticstyles for vertices
      VertexWeightAutomaticweights for vertices

Examples

open all close all

Basic Examples  (1)

Find a minimum spanning tree in a graph:

Highlight the spanning tree:

Scope  (10)

FindSpanningTree works with a list of points:

A list of strings:

A list of geodetic positions:

FindSpanningTree works with undirected graphs:

Directed graphs:

Weighted graphs:

Multigraphs:

Find a minimum spanning tree with a start root:

Use rules to specify the graph:

FindSpanningTree works with large graphs:

Generalizations & Extensions  (1)

Find a maximum spanning tree:

Options  (5)

EdgeWeight  (1)

By default, the edge weight is taken to be its EdgeWeight annotation if available, and otherwise 1:

Use EdgeWeight->weights to set the edge weight:

Method  (4)

The method is automatically chosen depending on input:

"Prim" can be used for undirected dense graphs:

"Kruskal" can be used for undirected sparse graphs:

"MinimumCostArborescence" can be used for directed graphs:

Applications  (7)

A company is planning a fiber network for a number of Chicago suburbs. It only has the right of way for its fiber along certain corridors. Some of those corridors might be more expensive. Find the subgraph of connection corridors that connect every suburb with the lowest total cost:

The phone company task is to provide phone lines to a village with 10 houses. Each node is a house and each house has a location. Find a way to wire up all houses using the least telephone wiring:

The resulting total length for the phone lines:

A two-dimensional array such that the rows have similar entries and differ only at a few places. denotes the number of different entries in row and . The array can be stored by representing one full row and all other rows as the entries that differ from another row. Each matrix row can be modeled as a vertex, with an edge to every other and a weight of that represents the number of entries that differ. Use a minimal-weight spanning tree to find an efficient storage scheme:

Store row 1 completely, and for the remaining rows store only the positions and entries where the row differs from its parent:

Build an interstate highway system joining the geographical centers of all African countries:

Minimize the total distances between all countries:

Show the highways:

Generate mazes from a grid graph with random weights:

A minimum spanning tree:

Custom styling for mazes:

Maze graph:

Find the expected size of minimal spanning trees for complete graphs with uniform random weights:

Size of a spanning tree is given as a sum of edge weights for the spanning tree:

For large complete graphs, the expected size approaches TemplateBox[{3}, Zeta]:

Find a minimal spanning tree for visiting Europe countries:

Visualize the path between countries:

Properties & Relations  (2)

The spanning tree graph is a tree:

BreadthFirstScan can be used to find a spanning tree of a graph:

Find a spanning tree using DepthFirstScan:

Possible Issues  (1)

Disconnected graphs give a spanning tree for each of their connected components:

Highlight the spanning trees:

Neat Examples  (1)

Minimum spanning tree of a random graph with vertices uniformly distributed on the sphere:

See Also

FindShortestTour  FindHamiltonianPath  FindShortestPath  FindPath  FindPostmanTour  FindEulerianCycle  DepthFirstScan  BreadthFirstScan  TreeGraph  DominatorTreeGraph  LinearOptimization

Function Repository: MergeFindSet  IndexedQueue  PriorityQueue

Related Guides

    ▪
  • Graph Operations and Modifications
  • ▪
  • Discrete Mathematics
  • ▪
  • Spatial Point Collections
  • ▪
  • Tree Construction & Representation

History

Introduced in 2014 (10.0) | Updated in 2015 (10.3) ▪ 2021 (12.3)

Wolfram Research (2014), FindSpanningTree, Wolfram Language function, https://reference.wolfram.com/language/ref/FindSpanningTree.html (updated 2021).

Text

Wolfram Research (2014), FindSpanningTree, Wolfram Language function, https://reference.wolfram.com/language/ref/FindSpanningTree.html (updated 2021).

CMS

Wolfram Language. 2014. "FindSpanningTree." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/FindSpanningTree.html.

APA

Wolfram Language. (2014). FindSpanningTree. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FindSpanningTree.html

BibTeX

@misc{reference.wolfram_2025_findspanningtree, author="Wolfram Research", title="{FindSpanningTree}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/FindSpanningTree.html}", note=[Accessed: 01-December-2025]}

BibLaTeX

@online{reference.wolfram_2025_findspanningtree, organization={Wolfram Research}, title={FindSpanningTree}, year={2021}, url={https://reference.wolfram.com/language/ref/FindSpanningTree.html}, note=[Accessed: 01-December-2025]}

Top
Introduction for Programmers
Introductory Book
Wolfram Function Repository | Wolfram Data Repository | Wolfram Data Drop | Wolfram Language Products
Top
  • Products
  • Wolfram|One
  • Mathematica
  • Notebook Assistant + LLM Kit
  • System Modeler

  • Wolfram|Alpha Notebook Edition
  • Wolfram|Alpha Pro
  • Mobile Apps

  • Wolfram Player
  • Wolfram Engine

  • Volume & Site Licensing
  • Server Deployment Options
  • Consulting
  • Wolfram Consulting
  • Repositories
  • Data Repository
  • Function Repository
  • Community Paclet Repository
  • Neural Net Repository
  • Prompt Repository

  • Wolfram Language Example Repository
  • Notebook Archive
  • Wolfram GitHub
  • Learning
  • Wolfram U
  • Wolfram Language Documentation
  • Webinars & Training
  • Educational Programs

  • Wolfram Language Introduction
  • Fast Introduction for Programmers
  • Fast Introduction for Math Students
  • Books

  • Wolfram Community
  • Wolfram Blog
  • Public Resources
  • Wolfram|Alpha
  • Wolfram Problem Generator
  • Wolfram Challenges

  • Computer-Based Math
  • Computational Thinking
  • Computational Adventures

  • Demonstrations Project
  • Wolfram Data Drop
  • MathWorld
  • Wolfram Science
  • Wolfram Media Publishing
  • Customer Resources
  • Store
  • Product Downloads
  • User Portal
  • Your Account
  • Organization Access

  • Support FAQ
  • Contact Support
  • Company
  • About Wolfram
  • Careers
  • Contact
  • Events
Wolfram Community Wolfram Blog
Legal & Privacy Policy
WolframAlpha.com | WolframCloud.com
© 2025 Wolfram
© 2025 Wolfram | Legal & Privacy Policy |
English