数据结构中的节点是应该保持对对象的引用还是自己的对象?

时间:2018-04-24 14:05:43

标签: ios swift data-structures tree

我想将树数据结构用于项目。

我正在关注本教程:Swift Tree Data Structure

在此示例中,节点具有带泛型类型的值参数。

class Node<T> {
  var value: T
  weak var parent: Node?
  var children: [Node] = []

  init(value: T) {
    self.value = value
  }

  func add(child: Node) {
    children.append(child)
    child.parent = self
  }
}

我想知道数据结构是否应该仅仅包含对模型对象的引用而不是自己的模型?

即。如果我想拥有一个家谱树的数据结构,那么最好这样做:

class Node {
  var value: Person
  weak var parent: Node?
  var children: [Node] = []

  init(value: Person) {
    self.value = value
  }

  func add(child: Node) {
    children.append(child)
    child.parent = self
  }
}

class Person {
  name: String

  init(name: String) {
    self.name
  }
}

或者这会更好:

class Person {
  let name: String
  weak var parent: Person?
  var children: [Person] = []

  init(name: String) {
    self.name = 
  }

  func add(child: Person) {
    children.append(child)
    child.parent = self
  }
}

我可以想象将模型和结构分开是有帮助的,但是我也可以想象它使某些功能更加困难,例如与云同步。

0 个答案:

没有答案