你可以试试这个:https ://github.com/afiore/arboreal
或者这个:https ://github.com/mauriciosantos/buckets/ (只有二叉搜索树,但还有其他数据结构)
如果您需要更复杂的东西,您将需要编写自己的库(或至少一个包含您所描述的所有方法的对象)。
编辑:
这是我实现树功能的简单代码。删除所有后代并删除所有孩子实际上是相同的......所以:
function Node(value) {
this.value = value;
this.children = [];
this.parent = null;
this.setParentNode = function(node) {
this.parent = node;
}
this.getParentNode = function() {
return this.parent;
}
this.addChild = function(node) {
node.setParentNode(this);
this.children[this.children.length] = node;
}
this.getChildren = function() {
return this.children;
}
this.removeChildren = function() {
this.children = [];
}
}
var root = new Node('root');
root.addChild(new Node('child 0'));
root.addChild(new Node('child 1'));
var children = root.getChildren();
for(var i = 0; i < children.length; i++) {
for(var j = 0; j < 5; j++) {
children[i].addChild(new Node('second level child ' + j));
}
}
console.log(root);
children[0].removeChildren();
console.log(root);
console.log(root.getParentNode());
console.log(children[1].getParentNode());
在 Chrome(或其他支持控制台的浏览器)中运行它。