2

What do you call a search tree with a split factor of 2^k, where k is the dimensionality of the data points stored within the tree? (The data points are vectors x_1, ... x_k)

For k=1 we would get a normal binary search tree. For k=2 we would split into 4 quadrants in every node in the tree, etc.

What would be the proper name for such a tree for arbitrary k?

Tim Kuipers
  • 1,514
  • 1
  • 15
  • 24
  • Does every internal node have `2^k` children? Then I guess it would be called a `2^k-ary tree`. A tree in which every internal node has 'n' children is often called an `n-ary tree` in the literature. – Shredderroy Mar 03 '14 at 22:04
  • Yeah if there is not a name especially for this type of tree then that is what I'm going to go with. – Tim Kuipers Mar 03 '14 at 22:14
  • 2
    are you talking about http://en.wikipedia.org/wiki/Exponential_tree – arunmoezhi Mar 03 '14 at 22:16
  • For some specific k, there are names for 2^k-ary trees (though I'm not sure whether you hide further requirements in "search tree"): k=1 -> binary tree, k=2 -> quadtree, k=3 -> octree. –  Mar 03 '14 at 22:56
  • @arunmoezhi: I think you're right. Although if you are then the Wikipedia article seems to have an error. It says that the third level of an exponential search tree would have 64 nodes. Wouldn't it have 16 nodes? – Jim Mischel Mar 03 '14 at 22:59
  • @arunmoezhi I don't think that's what the question is talking about. That's a tree structure where the branching factor keeps increasing as you go down versus a tree structure whose branching factor is fixed as 2^d. – templatetypedef Mar 04 '14 at 01:25
  • @templatetypedef: Yes you are right. He requires the tree to have constant branching factor but the exponential tree has a branching factor which is exponentially proportional to the level of a node – arunmoezhi Mar 04 '14 at 03:44
  • @JimMischel: Wiki says third level has 8 nodes and 4th level has 64 nodes which is correct. Each node in level 3 has 8 children. So at level 4 there will be a total of 64 nodes. – arunmoezhi Mar 04 '14 at 03:48
  • @arunmoezhi: Thanks. For some reason my brain didn't want to do that math. – Jim Mischel Mar 04 '14 at 04:09

1 Answers1

1

There are many data structures like this and I don't know if there's a specific name for it. For example, the quadtree and octree structures have these branching factors for k = 2 and k = 3, and the R-tree data structure does this in higher dimensional spaces (but also has some extra structure layered on top).

Typically, high-dimensional data structures don't have huge branching factors like this. Data structures like the k-d tree (or, more generally, BSP trees) store high-dimensional data but have a fixed branching factor of two to avoid exponentially increasing the space usage for high dimensions. Segment trees in high dimensions often use fractional cascading, which lets them use a low branching factor without sacrificing performance.

Hope this helps!

templatetypedef
  • 328,018
  • 92
  • 813
  • 992