【问题标题】:Implementing General Tree实现通用树
【发布时间】:2011-06-15 09:01:14
【问题描述】:

我遇到了以下代码,尽管得到了其他人的帮助,但我仍然无法理解它。 此代码应该实现通用树。 Single_List 和 Single_Node 类也可用于实现。

        template <class Object>
        class General_tree {
            private:
                Object element;  // the stored in the node
                Single_list< General_tree<Object> * > children;
                    // a linked list of pointers to general trees
            public:
                Object retrieve() {
                    return element;
                }
                // ...
        };

谁能告诉我这个类的一个实例将由什么组成?

我认为它将由

                           [element value in node made by Single_Node] -----> 
                             /                           next pointer (part of Single_list class)
                            / 
                           / children pointer to another such instance of General_Tree
                          V

然后这些实例可以组合成一棵树……我想我仍然习惯于面向对象设计,所以请告诉我这个推理和解释是否正确?

谢谢!

【问题讨论】:

标签: c++ class object tree oop


【解决方案1】:

树对象实际上是树中的一个节点,其中children指向下一层的节点,其中会有指向它们的子节点等的指针。

它们一起形成一棵子树(或整棵树,如果它是根节点)。

【讨论】:

  • 谢谢,您的回复很清楚,写得很好。只是为了澄清这一点:当您在下一级说“节点”时,您是指下一级的一个奇异节点。所以一个实例的children指针指向下一层的一个合适的节点对吧?
  • @rrazd - children 是一个指针列表,每个指针可能指向一个孩子。因为它是一个列表,所以您可以在下一级拥有不同数量的节点,就像真正的树枝一样。
  • 所以要在一个实例中添加多个子节点,您只需在 Single_List 类中使用 push_front() 函数吗?因此子指针将成为链表的头指针?为 push_front 生成的这些节点将是通用树指针类型,因此它们也将具有子指针......这是正确的吗?
  • 另外,如果可能的话,你能不能为这个类做一个最基本的实例的快速 ascii 绘图?我认为这将有助于我进行可视化。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多