标签: tree

何时使用Binary Space Partitioning,Quadtree,Octree?

我最近了解了二进制空间分区树及其在三维图形和碰撞检测中的应用.我还简要地阅读了与四叉树和八叉树相关的材料.你什么时候在bsp树上使用四叉树,反之亦然?它们可以互换吗?如果我有足够的信息来填写这样的表格,我会感到满意:

            | BSP | Quadtree | Octree
------------+----------------+-------
Situation A |  X  |          |
Situation B |     |     X    |
Situation C |     |          |   X
Run Code Online (Sandbox Code Playgroud)

什么是A,B和C?

3d tree quadtree octree space-partitioning

68
推荐指数
3
解决办法
4万
查看次数

使用"N"个节点,可以使用多少个不同的二进制和二进制搜索树?

对于二叉树:没有必要考虑树节点值,我只对具有'N'节点的不同树拓扑感兴趣.

对于二进制搜索树:我们必须考虑树节点值.

tree binary-tree catalan

68
推荐指数
7
解决办法
14万
查看次数

Python的标准库 - 是否存在平衡二叉树的模块?

在Python的标准库中是否有AVL或Red-Black模块或其他类型的平衡二叉树?我试图找到一个,但没有成功(我对Python比较新).

python tree standard-library

65
推荐指数
5
解决办法
3万
查看次数

Makefile问题:扫描.c文件的目录树的智能方法

我正在做一个快速增长的项目,保持目标文件的日期是没有选择的.wildcard命令之外的问题介于"我不想要递归的makefile"和"我不希望它手动列出"之间.这些对象应该进入一个单独的目录,该目录已经可以使用.注:我不是用的makefile,我知道的基本知识,但一切都超出了......

所以我的问题是: 如何以递归方式扫描src文件夹并以智能方式执行此操作?

我已经用多个SRC变量做了这个但是这很难看,并且整个makefile与越来越多的目录混乱.

我目前使用的是:

OS = Linux

VERSION = 0.0.1
CC      = /usr/bin/gcc
CFLAGS  = -Wall -g -D_REENTRANT -DVERSION=\"$(VERSION)\"
LDFLAGS = -lm `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`

BUILDDIR = build
SOURCEDIR = src
HEADERDIR = src

SOURCES = $(wildcard $(SOURCEDIR)/*.c)
OBJECTS = $(patsubst $(SOURCEDIR)/%.c, $(BUILDDIR)/%.o, $(SOURCES))

NAME = cinnamon
BINARY = cinnamon.bin

ECHO = echo
RM = rm -rf
MKDIR = mkdir
INSTALL = install

.PHONY: all clean setup

all: $(BINARY)


$(BINARY): $(BUILDDIR)/$(OBJECTS)
    $(CC) $(CFLAGS) $(LDFLAGS) …
Run Code Online (Sandbox Code Playgroud)

tree makefile

54
推荐指数
3
解决办法
7万
查看次数

以递归方式循环遍历对象(树)

有没有办法(在jQuery或JavaScript中)循环遍历每个对象,它的子孙和孙子等等?

如果是这样......我还可以读他们的名字吗?

例:

foo :{
  bar:'',
  child:{
    grand:{
      greatgrand: {
        //and so on
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

所以循环应该做这样的事情......

loop start
   if(nameof == 'child'){
     //do something
   }
   if(nameof == 'bar'){
     //do something
   }
   if(nameof =='grand'){
     //do something
   }
loop end
Run Code Online (Sandbox Code Playgroud)

javascript tree jquery

53
推荐指数
3
解决办法
8万
查看次数

使用Pickle/cPickle命中最大递归深度

背景:我正在使用最小构造算法构建一个代表字典的trie.输入列表是4.3M utf-8字符串,按字典顺序排序.生成的图形是非循环的,最大深度为638个节点.我的脚本的第一行将递归限制设置为1100 sys.setrecursionlimit().

问题:我希望能够将我的trie序列化到磁盘,因此我可以将其加载到内存中而无需从头开始重建(大约22分钟).我曾经尝试都pickle.dump()cPickle.dump(),用文本和二进制协议两种.每次,我得到一个如下所示的堆栈跟踪:

  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 725, in save_inst
    save(stuff)
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 648, in save_dict
    self.memoize(obj)
RuntimeError: maximum recursion depth exceeded
Run Code Online (Sandbox Code Playgroud)

我的数据结构相对简单: trie包含对开始状态的引用,并定义了一些方法. dfa_state包含布尔字段,字符串字段和从标签到状态的字典映射.

我对内部工作原理并不十分熟悉pickle- …

python tree recursion pickle depth

52
推荐指数
4
解决办法
3万
查看次数

使用self.xxxx作为默认参数 - Python

嘿大家好,我正在努力简化我的一个作业问题并使代码更好一些.我正在使用的是二叉搜索树.现在我在我的Tree()类中有一个函数,它找到所有元素并将它们放入列表中.

tree = Tree()
#insert a bunch of items into tree
Run Code Online (Sandbox Code Playgroud)

然后我使用我的makeList()函数从树中获取所有节点并将它们放在一个列表中.makeList()我打电话给这个功能tree.makeList(tree.root).对我来说,这似乎有点重复.我已经调用了树对象,tree.所以这tree.root只是浪费一点点打字.

现在makeList函数是:

    def makeList(self, aNode):
        if aNode is None:
            return []
        return [aNode.data] + self.makeList(aNode.lChild) + self.makeList(aNode.rChild)
Run Code Online (Sandbox Code Playgroud)

我想让aNode输入一个默认参数,例如aNode = self.root(这不起作用),这样我可以运行这个函数,tree.makeList().

第一个问题是,为什么不起作用?
第二个问题是,有没有办法可以运作?正如你所看到的那样,makeList()函数是递归的,所以我无法在函数的开头定义任何东西,或者我得到一个无限循环.

编辑 以下是所有要求的代码:

class Node(object):
    def __init__(self, data):
        self.data = data
        self.lChild = None
        self.rChild = None

class Tree(object):
    def __init__(self):
        self.root = None

    def __str__(self):
        current = self.root

    def isEmpty(self):
        if …
Run Code Online (Sandbox Code Playgroud)

python tree recursion object

52
推荐指数
2
解决办法
2万
查看次数

有效地覆盖处理继承

我有以下两种数据结构.

首先,应用于对象三元组的属性列表:

Object1  Object2  Object3 Property  Value
     O1       O2       O3       P1  "abc"
     O1       O2       O3       P2  "xyz"
     O1       O3       O4       P1  "123"
     O2       O4       O5       P1  "098"
Run Code Online (Sandbox Code Playgroud)

,继承树:

O1
    O2
        O4
    O3
        O5
Run Code Online (Sandbox Code Playgroud)

或者视为关系:

Object    Parent
    O2        O1
    O4        O2
    O3        O1
    O5        O3
    O1      null
Run Code Online (Sandbox Code Playgroud)

这种语义是O2从O1继承属性; O4 - 来自O2和O1; O3 - 来自O1; 和O5 - 来自O3和O1,按优先顺序排列.
注1:我有一种有效的方法来选择给定对象的所有孩子或所有父母.目前这是使用左右索引实现的,但hierarchyid也可以工作.这现在看起来并不重要.
注2:我有触发器确保"对象"列始终包含所有可能的对象,即使它们实际上不必存在(即没有定义父或子).这使得可以使用inner joins而不是效率低得多的outer joins.

目标是:给定一对(Property,Value),返回具有该属性的所有对象三元组,该属性具有显式定义或从父级继承.

注1:一个对象三重(X,Y,Z)被认为是三重"父" (A,B,C),当它为真,要么X = A或 …

sql sql-server tree sql-server-2008

50
推荐指数
1
解决办法
2394
查看次数

存储大量图像

我正在考虑开发自己的基于PHP的图库来存储大量图片,可能是成千上万.

在数据库中,我将指向图像的URL,但问题是:我知道让所有这些文件都位于服务器中的同一目录是不切实际的,因为它会减慢对爬网的访问速度,所以,你会怎么做?存储所有这些?某种基于jpeg/png名称的树?

你会推荐我对图像进行分区的规则是什么?

(它将专注于使用cheapo dot coms,因此不可能使用服务器进行修改)

filesystems tree image

49
推荐指数
5
解决办法
1万
查看次数

尝试和树木之间的区别?

我远程记住,尝试不存储每个节点的整个数据,只存储父节点的后缀.

树存储整个数据,但只根据前缀组织自己.

因此尝试变得更小,这允许例如非常好地压缩字典.

这真的是唯一的区别吗?

从实际应用程序中我记得尝试在范围查询中更快.甚至还有特殊的solr/lucene trie字段来加速范围查询.但那是怎么回事?

尝试和树木的实际差异是什么,优点和缺点是什么?

tree trie

49
推荐指数
4
解决办法
3万
查看次数