tt

tree-traversal

Iterative tree structure traversal library for Node.js

Showing:

Popularity

Downloads/wk

438

GitHub Stars

7

Maintenance

Last Commit

5mos ago

Contributors

1

Package

Dependencies

1

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

tree-traversal

Iterative tree structure traversal library for Node.js.

Provides (asynchronous) iterative tree traversal strategies (breadth first, depth first) for arbitrary tree structures. There are also recursive traversal methods, though they should not be used on large trees due to stack size limitations.

NPM

Install

npm install tree-traversal

API

  • breadth(rootNode, options) - asynchronous iterative breadth first traversal

    • rootNode - The root node of the tree structure
    • options - Object providing callbacks for traversing the tree:
    // Options with default values:
    {
        // Subnode accessor: used to traverse the tree.
        // Must return an array of node's subnodes.
        subnodesAccessor: function(node) { return node.subnodes; },
    
        // Userdata accessor: allows modification of userdata
        // based on the current node. Note that this is called
        // after the onNode callback.
        // Must return the replacement userdata.
        userdataAccessor: function(node, userdata) { return userdata; },
    
        // Function called for each node in the tree. When the
        // function finishes it needs to call callback to continue
        // the tree traversal.
        onNode: function(node, callback, userdata) { callback(); },
    
        // Function called when all nodes have been visited.
        onComplete: function(rootNode) {},
    
        // Optional application data.
        userdata: null
    }
    
  • breadthSync(rootNode, options) - synchronous iterative breadth first traversal

    • rootNode - The root node of the tree structure
    • options - Object providing callbacks for traversing the tree:
    // Options with default values:
    {
        // Subnode accessor: used to traverse the tree.
        // Must return an array of node's subnodes.
        subnodesAccessor: function(node) { return node.subnodes; },
    
        // Userdata accessor: allows modification of userdata
        // based on the current node. Note that this is called
        // after the onNode callback.
        // Must return the replacement userdata.
        userdataAccessor: function(node, userdata) { return userdata; },
    
        // Function called for each node in the tree.
        // Tree traversal continues when this callback returns.
        onNode: function(node, userdata) {},
    
        // Optional application data.
        userdata: null
    }
    
  • depth(rootNode, options) - asynchronous iterative depth first traversal

    • rootNode - The root node of the tree structure
    • options - Object providing callbacks for traversing the tree:
    // Options with default values:
    {
        // Subnode accessor: used to traverse the tree.
        // Must return an array of node's subnodes.
        subnodesAccessor: function(node) { return node.subnodes; },
    
        // Userdata accessor: allows modification of userdata
        // based on the current node. Note that this is called
        // after the onNode callback.
        // Must return the replacement userdata.
        userdataAccessor: function(node, userdata) { return userdata; },
    
        // Function called for each node in the tree. When the
        // function finishes it needs to call callback to continue
        // the tree traversal.
        onNode: function(node, callback, userdata) { callback(); },
    
        // Function called when all nodes have been visited.
        onComplete: function(rootNode) {},
    
        // Optional application data.
        userdata: null
    }
    
  • depthSync(rootNode, options) - synchronous iterative depth first traversal

    • rootNode - The root node of the tree structure
    • options - Object providing callbacks for traversing the tree:
    // Options with default values:
    {
        // Subnode accessor: used to traverse the tree.
        // Must return an array of node's subnodes.
        subnodesAccessor: function(node) { return node.subnodes; },
    
        // Userdata accessor: allows modification of userdata
        // based on the current node. Note that this is called
        // after the onNode callback.
        // Must return the replacement userdata.
        userdataAccessor: function(node, userdata) { return userdata; },
    
        // Function called for each node in the tree.
        // Tree traversal continues when this callback returns.
        onNode: function(node, userdata) {},
    
        // Optional application data.
        userdata: null
    }
    

Dependencies

  • async

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial