JSFiddle - React, Tailwind, and code Playground

by tara5

JavaScript

function TreeNode(value, children) {
	this.value = value;
	this.children = children;
}

TreeNode.prototype.getChildren = function() {
	return this.children;
}

TreeNode.prototype.getValue = function() {
	return this.value;
}


var root = new TreeNode(1, [
  new TreeNode(2, [
    new TreeNode(5, [])
  ]),
  new TreeNode(3, [

  ]),
  new TreeNode(4, [
    new TreeNode(6, [
      new TreeNode(7, [])
    ])
  ])
]);

function traverse(node, callback) {
	var children = node.getChildren();

	callback(node);

	while(children.length > 0) {
 			let memo = [];
 
      for (let i = 0; i < children.length; i++) {
      	let child = children[i];
        
        if (child.getChildren().length > 0) {
        	memo = memo.concat(child.getChildren());
        }
        
        callback(child);
      }
      
      children = memo;
    }
}

traverse(root, function(node) {
	console.log(node.getValue());
});