【问题标题】:How to create graph structure with distinct parents and children如何创建具有不同父母和孩子的图形结构
【发布时间】:2016-06-27 15:57:45
【问题描述】:

我正在尝试创建一个图形结构,其中每个节点在 JavaScript 中都有不同的父节点和子节点。因此,每个节点必须能够有多个父节点和多个子节点。我需要能够区分父母和孩子,因为我需要分层表示。我需要能够实现类似于下面在 javascript 中显示的内容,但结构显然会比这更大。有什么办法可以做到吗?

到目前为止,我已经尝试使用常规树结构来执行此操作,并且我也尝试过本教程:https://www.syncano.io/blog/data-structures-in-javascript/,但我无法像上面描述的那样以分层方式工作。

【问题讨论】:

  • 更新了我的问题以显示这一点。感谢@BryceDrew 的建议。
  • 你应该解释你“无法让它工作”的问题

标签: javascript data-structures graph


【解决方案1】:

一个简单的节点结构。每个节点都有不同的父节点和子节点。在这里,我打电话给左右。我想你想要的是一个孩子的名单。制作一个方法将孩子附加到孩子列表中。

很抱歉,如果这结构不好;我通常会使用 CoffeeScript。

https://jsfiddle.net/wx0v4jmt/

var left, right;

var Node = (function() {
  function Node(data, left, right) {
    if (left == null) {
      left = null;
    }
    if (right == null) {
      right = null;
    }
    this.data = data;
    this.left = left;
    this.right = right;
  }

  Node.prototype.get_data = function() {
    return this.data;
  };

  return Node;

})();

var node_4 = new Node("node_4", left=null, right=null);
var node_3 = new Node("node_3", left=node_4, right=null);
var node_2 = new Node("node_2", left=null, right=node_4);
var node_1 = new Node("node_1", left=node_2, right=node_3);

console.log(node_1.get_data())
console.log(node_1.left.get_data())
console.log(node_1.right.get_data())
console.log(node_1.left.right.get_data())
console.log(node_1.right.left.get_data())

【讨论】:

  • 左右是什么意思?示例中的 left 和 right 是指节点 2 和 3 吗?我最终将需要添加比它们自己的孩子更多的节点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多