1.树的构造函数
1.1 Node
属性:
data存储的值
parent指向节点的父节点
children指向许多孩子节点
Node构造函数:
function Node(data) {
this.data = data;
this.parent = null;
this.children = [];
}
1.2Tree
属性和方法:
root:指向一棵树的根节点
deepTraversal(callback,node):遍历与DFS树的节点
widthTraversal(callback,node):遍历与BFS树的节点
contasins(data,traversal)搜索树中的节点
add(data,toData,traverse)将节点添加到一棵树
remove(child,parent)在一棵树中删除一个节点
Tree构造函数:
先创建一个新实例的Node,随后指派node作为树的根
function Tree (data) {
var node = new Node(data);
this._root = node;
}
1.3创建tree
var tree = new Tree('CEO');
tree._root;//{
data:'CEO',parent:null,children:[]}
2.一个树的方法
2.1 traverseDF(callback)遍历与DFS树的节点
//深度遍历
Tree.prototype.deepTraversal = function(callback,node){
var nodes = [];
if (node != null) {
var stack = [];
stack.push(node);
while (stack.length != 0) {
var item = stack.pop();
callback(item);
nodes.push(item);
var children = item.children;
for (var i = children.length - 1; i >= 0; i--)
stack.push(children[i]);
}
}
return nodes;
};
举例
var tree = new Tree('one');
tree._root.children.push(new</