问题描述
我想生成一棵用户树,分数较高的用户将位于树的顶部。我可以创建一个二进制搜索树,但是,用户的分布是从左到右,而不是从上到下。例如。
从左到右分布二进制搜索树
4
/ \
2 6
/ \ / \
1 3 5 7
从上到下的分布,最高的分数在树中最高
7
/ \
5 6
/ \ / \
1 2 3 4
用户将是独立的,他们将能够从树上断开连接,或者在分数改变或将具有不同分数的用户引入系统时可以将其改组。
性能和效率并不重要,只是希望层次结构具有清晰的依赖关系树,尽管希望对结构进行尽可能少的更改。
当我想到这个主意时,这似乎是一个简单的问题,但是,尝试越多,实现起来似乎越复杂。
我从没上过大学,所以没有数据结构的基础,可以为我指出正确方向的任何事情。
class Node {
left: null
right: null
constructor(id,score) {
this.id = id
this.score = score
}
}
class Tree {
root: null
constructor(root) {
this.root = root
}
}
const addNode = (tree,node) => {
const go = (parent) => {
if (node.score <= parent.score) {
if (!parent.left) {
parent.left = node;
} else {
go(parent.left);
}
} else {
if (!parent.right) {
parent.right = node;
} else {
go(parent.right);
}
}
};
go(tree.root);
}
const tree = new Tree(new Node(1,7))
addNode(tree,new Node(2,6))
addNode(tree,new Node(3,5))
addNode(tree,new Node(4,4))
addNode(tree,new Node(5,3))
addNode(tree,new Node(6,2))
addNode(tree,new Node(7,1))
console.log(tree)
.as-console-wrapper { min-height: 100%; }
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)