Skip to content

gitter-badger/Data-Tree

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 builds from dist/dataTree.js OR dist/dataTree.min.js in <script /> tag. Browserified builds available at dataTree.js and dataTree.min.js can be used in <script/> directly.

Examples:

Following examples will guide you about how 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());
});

Develop

  1. Clone this repositoy and cd into it
  2. npm install
  3. grunt build to build browserify files OR grunt watch to build automatically upon file change.

About

Create and traverse a tree

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 98.5%
  • HTML 1.5%