StrahlerNumber
BinaryTree: The Horton-Strahler number (register function): 0 for the empty tree, else the larger child's, plus one if the children tie. OrderedTree: The Strahler number: a leaf is 1, a vertex takes its largest child's, plus one if that value occurs twice.
✓ checked against that system · ! checked, with disagreements (hover a chip)FindStat
St000396via BinaryTree✓St000397via OrderedTree✓StrahlerNumber(tree)BinaryTree: The Horton-Strahler number (register function): 0 for the empty tree, else the larger child's, plus one if the children tie. OrderedTree: The Strahler number: a leaf is 1, a vertex takes its largest child's, plus one if that value occurs twice.Typed signatures
| Type | Package | Applies |
|---|---|---|
(binary_tree | ordered_tree) -> number | combinatorics | always |
Details
- Defined over
BinaryTreeas an expression in_x, evaluated by compute-engine — the definition IS the implementation. - Takes a
BinaryTreeand nothing else — it reads values against their positions, or walks the orbits, so it needs the bijection. Applying it to a bare list is a type error, not a wrong answer. - Defined over
OrderedTreeas an expression in_x, evaluated by compute-engine — the definition IS the implementation. - Takes a
OrderedTreeand nothing else — it reads values against their positions, or walks the orbits, so it needs the bijection. Applying it to a bare list is a type error, not a wrong answer.
Definition
Epsil, as the implementation runs it.
on BinaryTree, over _x
Apply(
Function(0 if t in Integers else Apply(
Function(
a + 1 if a == b else Max(a, b),
a,
b,
),
self(self, t[1]),
self(self, t[2]),
), self, t),
Function(0 if t in Integers else Apply(
Function(
a + 1 if a == b else Max(a, b),
a,
b,
),
self(self, t[1]),
self(self, t[2]),
), self, t),
_x,
)on OrderedTree, over _x
Apply(
Function(1 if Length(t) == 0 else Apply(
(r: collection) => Max(
r[1],
r[2] + 1,
),
Fold(
Function([
Max(p[1], e),
Max(
p[2],
Min(
p[1],
e,
),
),
], p, e),
[0, 0],
Map(
Function(self(
self,
c,
), c),
t,
),
),
), self, t),
Function(1 if Length(t) == 0 else Apply(
(r: collection) => Max(
r[1],
r[2] + 1,
),
Fold(
Function([
Max(p[1], e),
Max(
p[2],
Min(
p[1],
e,
),
),
], p, e),
[0, 0],
Map(
Function(self(
self,
c,
), c),
t,
),
),
), self, t),
_x,
)Examples
Properties #
About
| Examples | 8 |
|---|---|
| Crosswalk | FindStat ×2 |