如何解决具有更高数字的二叉树
我想生成一棵用户树,分数较高的用户将位于树的顶部。我可以创建一个二进制搜索树,但是,用户的分布是从左到右,而不是从上到下。例如。
从左到右分布二进制搜索树
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 举报,一经查实,本站将立刻删除。