微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有更高数字的二叉树

如何解决具有更高数字的二叉树

我想生成一棵用户树,分数较高的用户将位于树的顶部。我可以创建一个二进制搜索树,但是,用户的分布是从左到右,而不是从上到下。例如。

从左到右分布二进制搜索

          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 举报,一经查实,本站将立刻删除。