Skip to content

CompleteKaryTree ​

The full (perfect) kk-ary tree of the given depth — every level completely filled.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageCompleteKaryTree✓
CompleteKaryTree(levels)binary (k=2k = 2); levels is a LEVEL count, not a vertex count.
CompleteKaryTree(levels, k)n=(klevels−1)/(k−1)n = (k^{\text{levels}} - 1) / (k - 1) vertices, 1-indexed heap layout — vertex ii's children are k(i−1)+2,…,k(i−1)+k+1k(i-1)+2, \dots, k(i-1)+k+1.
Typed signatures
TypePackageApplies
(integer, integer?) -> valuecombinatoricsalways

Domain: Collections

Details
  • levels counts LEVELS, not vertices (kernel-verified): CompleteKaryTree(1, 2) is a single vertex, CompleteKaryTree(3, 2) has 7.

Examples

3 more kept as data, checked against the oracles
Basic #

1 + 2 + 4 = 7

live ↗
InVertexCount(CompleteKaryTree(3,2))\mathrm{VertexCount}(\mathrm{CompleteKaryTree}(3, 2))Out77
live ↗
InVertexCount(CompleteKaryTree(1,2))\mathrm{VertexCount}(\mathrm{CompleteKaryTree}(1, 2))Out11

A complete k-ary tree is always a tree (n−1n - 1 edges, connected)

live ↗
InIsTreeGraph(CompleteKaryTree(3,2))\mathrm{IsTreeGraph}(\mathrm{CompleteKaryTree}(3, 2))OutTrue\mathrm{True}

The root of a 3-level ternary tree has 3 children

live ↗
InVertexDegree(CompleteKaryTree(3,3),1)\mathrm{VertexDegree}(\mathrm{CompleteKaryTree}(3, 3), 1)Out33

Default is binary: 5 levels hold 31 vertices

live ↗
InCompleteKaryTree(5)\mathrm{CompleteKaryTree}(5)OutGraph([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],[UndirectedEdge(1,2),UndirectedEdge(1,3),UndirectedEdge(2,4),UndirectedEdge(2,5),UndirectedEdge(3,6),UndirectedEdge(3,7),UndirectedEdge(4,8),UndirectedEdge(4,9),UndirectedEdge(5,10),UndirectedEdge(5,11),UndirectedEdge(6,12),UndirectedEdge(6,13),UndirectedEdge(7,14),UndirectedEdge(7,15),UndirectedEdge(8,16),UndirectedEdge(8,17),UndirectedEdge(9,18),UndirectedEdge(9,19),UndirectedEdge(10,20),UndirectedEdge(10,21),UndirectedEdge(11,22),UndirectedEdge(11,23),UndirectedEdge(12,24),UndirectedEdge(12,25),UndirectedEdge(13,26),UndirectedEdge(13,27),UndirectedEdge(14,28),UndirectedEdge(14,29),UndirectedEdge(15,30),UndirectedEdge(15,31)])\mathrm{Graph}(\bigl\lbrack1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31\bigr\rbrack, \bigl\lbrack\mathrm{UndirectedEdge}(1, 2), \mathrm{UndirectedEdge}(1, 3), \mathrm{UndirectedEdge}(2, 4), \mathrm{UndirectedEdge}(2, 5), \mathrm{UndirectedEdge}(3, 6), \mathrm{UndirectedEdge}(3, 7), \mathrm{UndirectedEdge}(4, 8), \mathrm{UndirectedEdge}(4, 9), \mathrm{UndirectedEdge}(5, 10), \mathrm{UndirectedEdge}(5, 11), \mathrm{UndirectedEdge}(6, 12), \mathrm{UndirectedEdge}(6, 13), \mathrm{UndirectedEdge}(7, 14), \mathrm{UndirectedEdge}(7, 15), \mathrm{UndirectedEdge}(8, 16), \mathrm{UndirectedEdge}(8, 17), \mathrm{UndirectedEdge}(9, 18), \mathrm{UndirectedEdge}(9, 19), \mathrm{UndirectedEdge}(10, 20), \mathrm{UndirectedEdge}(10, 21), \mathrm{UndirectedEdge}(11, 22), \mathrm{UndirectedEdge}(11, 23), \mathrm{UndirectedEdge}(12, 24), \mathrm{UndirectedEdge}(12, 25), \mathrm{UndirectedEdge}(13, 26), \mathrm{UndirectedEdge}(13, 27), \mathrm{UndirectedEdge}(14, 28), \mathrm{UndirectedEdge}(14, 29), \mathrm{UndirectedEdge}(15, 30), \mathrm{UndirectedEdge}(15, 31)\bigr\rbrack)

Three levels with branching 3 give 13 vertices

live ↗
InCompleteKaryTree(3,3)\mathrm{CompleteKaryTree}(3, 3)OutGraph([1,2,3,4,5,6,7,8,9,10,11,12,13],[UndirectedEdge(1,2),UndirectedEdge(1,3),UndirectedEdge(1,4),UndirectedEdge(2,5),UndirectedEdge(2,6),UndirectedEdge(2,7),UndirectedEdge(3,8),UndirectedEdge(3,9),UndirectedEdge(3,10),UndirectedEdge(4,11),UndirectedEdge(4,12),UndirectedEdge(4,13)])\mathrm{Graph}(\bigl\lbrack1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13\bigr\rbrack, \bigl\lbrack\mathrm{UndirectedEdge}(1, 2), \mathrm{UndirectedEdge}(1, 3), \mathrm{UndirectedEdge}(1, 4), \mathrm{UndirectedEdge}(2, 5), \mathrm{UndirectedEdge}(2, 6), \mathrm{UndirectedEdge}(2, 7), \mathrm{UndirectedEdge}(3, 8), \mathrm{UndirectedEdge}(3, 9), \mathrm{UndirectedEdge}(3, 10), \mathrm{UndirectedEdge}(4, 11), \mathrm{UndirectedEdge}(4, 12), \mathrm{UndirectedEdge}(4, 13)\bigr\rbrack)
Scope #

Two levels of ternary branching: a root with 3 leaves

live ↗
InCompleteKaryTree(2,3)\mathrm{CompleteKaryTree}(2, 3)OutGraph([1,2,3,4],[UndirectedEdge(1,2),UndirectedEdge(1,3),UndirectedEdge(1,4)])\mathrm{Graph}(\bigl\lbrack1, 2, 3, 4\bigr\rbrack, \bigl\lbrack\mathrm{UndirectedEdge}(1, 2), \mathrm{UndirectedEdge}(1, 3), \mathrm{UndirectedEdge}(1, 4)\bigr\rbrack)
Applications #

Eccentricity grows from the root's 2 to 4 at the leaves

live ↗
InMap(()↦VertexEccentricity(CompleteKaryTree(3,2),_1⁡),VertexList(CompleteKaryTree(3,2)))\mathrm{Map}(()↦\mathrm{VertexEccentricity}(\mathrm{CompleteKaryTree}(3, 2), \operatorname{\_1}), \mathrm{VertexList}(\mathrm{CompleteKaryTree}(3, 2)))Out[2,3,3,4,4,4,4]\bigl\lbrack2, 3, 3, 4, 4, 4, 4\bigr\rbrack
Properties #

Trees are bipartite

live ↗
InIsBipartiteGraph(CompleteKaryTree(3,3))\mathrm{IsBipartiteGraph}(\mathrm{CompleteKaryTree}(3, 3))OutTrue\mathrm{True}

A tree has no cycles

live ↗
InIsAcyclicGraph(CompleteKaryTree(3,3))\mathrm{IsAcyclicGraph}(\mathrm{CompleteKaryTree}(3, 3))OutTrue\mathrm{True}

No vertex is joined to itself

live ↗
InIsLoopFreeGraph(CompleteKaryTree(3,3))\mathrm{IsLoopFreeGraph}(\mathrm{CompleteKaryTree}(3, 3))OutTrue\mathrm{True}

Three levels of 4-ary branching: 1+4+16=211+4+16=21 vertices

live ↗
InCompleteKaryTree(3,4)\mathrm{CompleteKaryTree}(3, 4)OutGraph([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],[UndirectedEdge(1,2),UndirectedEdge(1,3),UndirectedEdge(1,4),UndirectedEdge(1,5),UndirectedEdge(2,6),UndirectedEdge(2,7),UndirectedEdge(2,8),UndirectedEdge(2,9),UndirectedEdge(3,10),UndirectedEdge(3,11),UndirectedEdge(3,12),UndirectedEdge(3,13),UndirectedEdge(4,14),UndirectedEdge(4,15),UndirectedEdge(4,16),UndirectedEdge(4,17),UndirectedEdge(5,18),UndirectedEdge(5,19),UndirectedEdge(5,20),UndirectedEdge(5,21)])\mathrm{Graph}(\bigl\lbrack1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21\bigr\rbrack, \bigl\lbrack\mathrm{UndirectedEdge}(1, 2), \mathrm{UndirectedEdge}(1, 3), \mathrm{UndirectedEdge}(1, 4), \mathrm{UndirectedEdge}(1, 5), \mathrm{UndirectedEdge}(2, 6), \mathrm{UndirectedEdge}(2, 7), \mathrm{UndirectedEdge}(2, 8), \mathrm{UndirectedEdge}(2, 9), \mathrm{UndirectedEdge}(3, 10), \mathrm{UndirectedEdge}(3, 11), \mathrm{UndirectedEdge}(3, 12), \mathrm{UndirectedEdge}(3, 13), \mathrm{UndirectedEdge}(4, 14), \mathrm{UndirectedEdge}(4, 15), \mathrm{UndirectedEdge}(4, 16), \mathrm{UndirectedEdge}(4, 17), \mathrm{UndirectedEdge}(5, 18), \mathrm{UndirectedEdge}(5, 19), \mathrm{UndirectedEdge}(5, 20), \mathrm{UndirectedEdge}(5, 21)\bigr\rbrack)
About
Examples15
Checked againstWolfram Language 15 agree
CrosswalkWolfram Language

See also: StarGraph, IsTreeGraph