具有更高数字的二叉树

问题描述

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

从左到右分布二进制搜索

          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 (将#修改为@)