node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »

data-tree

Build Status npm version Dependency Status devDependency Status Gitter

Data Tree

Data oriented tree structure that unleashes the power of callbacks to create, search and traverse tree. Data tree keeps the track of current node which updates upon insertion and deletion of the node from tree.

Install:

$ npm install data-tree

Then use via require('data-tree') OR use browserified build available at dataTree.min.js in <script/> directly.

Examples:

Following examples will guide you to create tree, insert/remove nodes and search/traverse a tree. Don't forget to checkout Data-Tree reference.

Create tree

dataTree is global variable that can be used to create a tree in following way.

  var tree = dataTree.create();

Insert data

// Insert single value 
tree.insert(183);
 
// Insert array of values 
// NOTE: This does not create 3 different nodes. It considers an array as a whole data and puts in a single node. 
tree.insert([34, 565, 78]);
 
// Insert Objects 
tree.insert({
  key: '#berries',
  value: { name: 'Apple', color: 'Red'}
});

Create and append node to a parent node that satisfies the given criteria

// Insert data 
tree.insert({
  key: '#apple',
  value: { name: 'Apple', color: 'Red'}
});
 
// New Data 
var greenApple = {
  key: '#greenapple',
  value: { name: 'Green Apple', color: 'Green' }
};
 
// Insert data to node which has `key` = #apple 
tree.insertTo(function(data){
  return data.key === '#apple'
}, greenApple);

Create and append node using parent node's instance

// Insert data 
var node = tree.insert({
  key: '#apple',
  value: { name: 'Apple', color: 'Red'}
});
 
// New Data 
var greenApple = {
 key: '#greenapple',
 value: { name: 'Green Apple', color: 'Green' }
};
 
// Insert data to node 
// This will create a new node with given data and append to parent node provided 
tree.insertToNode(node, greenApple);

Remove Node

// Insert Node 
var node = tree.insert({
  key: '#apple',
  value: { name: 'Apple', color: 'Red'}
});
 
// Remove it 
tree.remove(node);

Search BFS

var node = tree.traverser().searchBFS(function(data){
  return data.key === '#apple';
});

Search DFS

var node = tree.traverser().searchDFS(function(data){
  return data.key === '#apple';
});

Traverse BFS

tree.traverser().traverseBFS(function(node){
  console.log(node.data());
});

Traverse DFS

tree.traverser().traverseDFS(function(node){
  console.log(node.data());
});

Find common parent

var commonParent = tree.findCommonParent(fromNode, toNode);

Developers

  1. Clone this repositoy and cd into it
  2. npm install
  3. npm run build to build browserify files OR npm run dev-server to start a development server.