NAME

Quiq::Tree - Operatonen auf Perl-Baumstrukturen

BASE CLASS

Quiq::Object

DESCRIPTION

Diese Klasse stellt Methoden zur Verfügung, um auf beliebigen baumartigen Perl-Datenstrukturen operieren zu können. D.h. der Baum wird als Datenstruktur aus Hashes und Arrays angesehen - ohne dass die Knoten einer bestimmten Klasse angehören müssen. Die Klasse besitzt daher ausschließlich Klassenmethoden. Der erste Parameter jeder Klassenmethode ist eine Referenz auf den Wurzelknoten des Baums.

METHODS

Klassenmethoden

leafPaths() - Liste der Pfade

Synopsis

@paths|$pathA = $class->leafPaths($ref);

Arguments

$ref

Referenz auf den Baum

Returns

(Array) Liste der Pfade. Im Skalarkontext wird eine Referenz auf die Liste geliefert.

Description

Liefere die Liste der Pfade zu den Blattknoten des Baums $ref. Diese Liste ist nützlich, um die Zugriffspfade zu den Blattknoten zu ermitteln.

removeEmptyNodes() - Entferne alle leeren Knoten

Synopsis

$class->removeEmptyNodes($ref);

Arguments

$ref

Referenz auf hierarchische Datenstruktur

Description

Durchlaufe die Datenstruktur $ref rekursiv und entferne alle leeren Knoten.

  • Ein Blattknoten ist leer, wenn wenn sein Wert undef ist.

  • Ein Hashknoten ist leer, wenn er kein Element enthält.

  • Ein Arrayknoten ist leer, wenn er kein Element enthält.

removeEmptyNodesRecursive() - Entferne leere Knoten

Synopsis

$class->removeEmptyNodesRecursive($ref);

Arguments

$ref

Referenz auf Baum

Description

Interne Methode, die den Baum rekursiv durchläuft und die leeren Knoten entfernt. Es sind i.d.R. mehrere Durchläufe nötig, um alle leeren Knoten zu entfernen, siehe $class->removeEmptyNodes().

setLeafValue() - Setze den Wert von Blattknoten

Synopsis

$class->setLeafValue($ref,$sub);

Arguments

$ref

Referenz auf hierarchische Datenstruktur

$sub

Referenz auf Subroutine, die für jeden Blattknoten gerufen wird.

Description

Durchlaufe die Datenstruktur $ref rekursiv, rufe auf allen Blattknoten die Subroutine $sub mit dem aktuellen Wert des Knotens auf und setze auf dem Knoten den gelieferten Wert.

Ein Blattknoten des Baums ist dadurch gekennzeichner, dass er einen "einfachen" skalaren Wert besitzt, also auf keine Substruktur (Hash- oder Array-Referenz) verweist.

VERSION

1.224

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2025 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.