代码之家  ›  专栏  ›  技术社区  ›  tunnuz

在树结构中,如何命名树、节点和叶子?

  •  0
  • tunnuz  · 技术社区  · 16 年前

    KdTree 表示树本身、节点和叶子。

    但是:元素只包含在叶子上,一些常规树参数(如拆分空间前的最大元素数)对于所有树都是相同的,最后拆分平面在叶子中没有任何意义。

    也就是说:我应该补三节课吗( KD树 , KdNode KdLeaf )或者假设每个节点或叶实际上是一个Kd树(事实上正是如此)和重复数据?

    3 回复  |  直到 16 年前
        1
  •  1
  •   user180326 user180326    16 年前

    我想说没有必要 Tree

    为了区分树叶和树枝的节点

     namespace KdTree
     { 
           abstract class Node 
           {
                 virtual EnumLeafNodes(LeafNodeCallback callback);
                 virtual GetLeafCount();
    
           }
    
           class Leaf : Node 
           {
                 // implement virtuals by returning/counting leaf values
           }
    
           class Branch : Node
           {
                 // implement virtuals by delegating to child nodes
    
                 // direct children:
                 Node[] children;  
           }   
     }
    

    请注意,这是非常多的伪代码(C#ish)。这种设计的思想是使用虚拟函数来区分分支和叶节点之间的行为,并且分支可以委托给它们的子节点。这是一个关于访问者模式的小例子。

        2
  •  1
  •   fredley    16 年前

        3
  •  1
  •   Danny T.    16 年前

    似乎前导和树只是在“分支”末尾的开始处的节点。

    在这些情况下,我只将它们命名为“节点”,在解析它们时,我将它们称为KdParentNode、KdNode和KdChildNode。如果一个节点没有父节点,它就是树(根)节点,如果它没有子节点,它就是叶节点。

    推荐文章