【问题标题】:How to find Size & Height for a tree?如何找到一棵树的大小和高度?
【发布时间】:2015-04-12 15:17:03
【问题描述】:

树的大小 = 树中的节点数

树的高度 = 树的最大深度

我正在用 C++ 实现一棵树: 类节点 私人的: 列出孩子; 字符*标签; 整数值;

【问题讨论】:

  • 你能用简单的英文写下size的定义吗? “一棵树的大小是……”。
  • 不参考父节点就找不到节点高度。或者你应该在添加新元素后重新计算元素的深度。

标签: c++ data-structures tree


【解决方案1】:

如果 size 是 Element 的子元素(直接和间接)和元素本身的数量:

int Element::size(){
   if (children.empty())
     return 0;

   size_t size = 0;
   for (const auto &child : children)
      size += child->size();

   size += children.size();

   if (_depth == 0) return size + 1;
   else return size;
}

【讨论】:

  • gomons:这很好用。谢谢!但它不包括根节点。
  • 根节点是特殊的。我经常创建继承自 Element 的类型 RootElement,它有自己的方法实现。
  • 没什么特别的
  • 您可以将 size() 定义为 Element 的子元素数量和 Element 本身,因此 return size; 转向 return size + 1;。我认为它也包括根节点。
  • @dingalapadum,但我更改了 size() 定义。现在没有子节点的节点大小为 1,如果节点有子节点,则其大小为 1 + 子节点大小。
猜你喜欢
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多