标签: traversal

大O和树遍历

如果我有这样的功能:

void myfunction(node* root)
{
   for(int i = 0; i<root->children.size();i++)
   {
      myfunction(root->children[i]);
   }
}
Run Code Online (Sandbox Code Playgroud)

那是n ^ 2的大O还是n的大O?如果你有一个for循环并且在for循环中有一个函数调用它自己,那么Big O迭代次数是函数的吗?

c++ tree big-o traversal

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

Clojure数据结构遍历/搜索

我希望能够做到这样的事情:

(search data 
  list?
  (fn [x] (and (list? x) (= 4 (first x))))
  (fn [x] (and (set? x) (contains x 3))))
Run Code Online (Sandbox Code Playgroud)

并以递归方式搜索嵌套数据结构data:

  1. 首先是最浅的列表(例如,可能在一组集合中).
  2. 然后在最浅层列表的列表中,第一个元素是谁4.
  3. 然后在那些包含3的最浅集合的列表中.
  4. 最后返回在步骤3中找到的项目列表.

在重新发明轮子之前,有没有一种标准的方法呢?

search traversal clojure data-structures

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

遍历在同一点结束的所有椎体的加权图

是否有算法允许我以下列方式遍历加权图?

  • 从特定节点开始
  • 浏览图表中的所有椎体
  • 在最短的时间内完成此操作(重量是时间)
  • 最终在起始节点

algorithm traversal graph

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

如何使用jQuery查找具有特定扩展名的链接

我试图遍历并找到具有特定扩展名(*.ashx)的链接,以便我可以在新选项卡中打开链接.(Sitefinity不允许target ="_ blank").

我可以使用jQuery找到标签,但我需要对其进行过滤,以便当我点击扩展名为.ashx的标签时,我可以在新窗口中打开它.

像这样的东西

<a href="anniversary.sflb.ashx"> Anniversary </a> 
Run Code Online (Sandbox Code Playgroud)

非常感谢,詹姆斯

jquery traversal hyperlink

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

遍历树时使用线程

我想加快遍历树的过程.以下是节点的示例:

    class Node
    {
        public List<Node> Children { get; set; }
        public int SompeProperty { get; set; }
        public String SomeOtherProperty { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我遍历尝试的方式如下:

    static void TraverseTree(Node ParentNode)
    {
        if (ParentNode.Children == null)
            return;

        foreach (var child in ParentNode.Children)
        {
            TraverseTree(child);               
        }
    }
Run Code Online (Sandbox Code Playgroud)

ParentNode.Children方法大约需要1毫秒,因为Node表示文件或目录.我只是用这个节点的例子来说明我的观点.

因此,如果您考虑一下,如果第一个节点有4个子节点,并且每个子节点都有10000000个后代,那么如果我们在separeate线程中利用并行编程来遍历这4个子节点中的每一个,我们可以提高此遍历的速度.如果那就是情景那么我会采取这种方法.但如果我事先不知道树的结构怎么能这样做呢?

我一直在考虑:

1)开始遍历树,将具有子节点的前10个节点放在堆栈上,然后在单独的线程上开始遍历每个节点.

2)做类似的事情:

    static void TraverseTree(Node ParentNode)
    {
        if (ParentNode.Children == null)
            return;

        foreach (var child in ParentNode.Children)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback((x) =>
            {                    
                TraverseTree(child);   
            }), null);                            
        }
    }
Run Code Online (Sandbox Code Playgroud)

这通常会给我带来奇怪的结果,但速度要快得多.


结果 …

c# parallel-processing performance multithreading traversal

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

在Tcl中动态创建数组

我试图动态填充数组,而不是通过运行如下所示的计数器手动设置它:

set all_list  { <my list>}
set num_pc_a_b 10

for {set i 0 ;set j 0 ; set k 0} {$j < $num_pc_a_b} {incr j; incr i ;incr k} {
    array set link_map  {[lindex $all_list $i] $j $k 0 }
}
Run Code Online (Sandbox Code Playgroud)

并希望访问如下变量:

foreach {key value value1 value2} [array get link_map] {
    puts "key is $key"
    puts "value is $value"
    puts "value is $value1"
    puts "value is $value2"
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我在这里做错了吗?

traversal tcl multidimensional-array

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

带返回类型数组的递归树遍历方法

有没有办法以递归方式遍历树并返回一个作用于该递归方法的数组?

所以我最近回答了别人关于这个话题的问题.这个问题可以在这里找到:SO问题.我的解决方案使用了递归范围之外的数组,因此该方法不能(或至少可能不应该)返回数组.但是,有没有办法编写一个遍历树的递归方法,以便返回一个数组?即使编写一个调用递归方法的初始方法也没关系,但我想不出一个好方法.

这是我之前建议的代码:

private List nodeValues = new ArrayList();

public void traversePreRecursive(BinarySearchTreeNode node) 
{
    if (node != null)
    {
        nodeValues.add(node.getValue());
        traversePreRecursive(node.getLeft());
        traversePreRecursive(node.getRight());
    }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,ArrayList它超出了递归范围 - 因此返回它并没有多大意义.有一个更好的方法吗?

java arrays recursion binary-tree traversal

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

Python Trie:如何遍历它来构建所有单词的列表?

我创建了一个trie树作为im学习python,这里是trie输出

{'a': {'b': {'c': {'_': '_'}}}, 'b': {'a': {'x': {'_': '_'}, 'r': {'_': '_', 'z': {'_': '_'}}, 'z': {'_': '_'}}}, 'h': {'e': {'l': {'l': {'o': {'_': '_'}}}}}}
Run Code Online (Sandbox Code Playgroud)

我无法列出trie中的所有单词,我显然不理解简单的东西,下面是我创建trie的代码并添加到trie以及检查trie中是否存在单词.方法列表是我尝试列出单词的可怜尝试,它只是获取每个单词的第一个字母.任何建议都是超级的.

# Make My trie
def make_trie(*args):
    """
    Make a trie by given words.
    """
    trie = {}
    for word in args:
        if type(word) != str:
            raise TypeError("Trie only works on str!")
        temp_trie = trie
        for letter in word:
            temp_trie = temp_trie.setdefault(letter, {})
        temp_trie = temp_trie.setdefault('_', '_')
    return trie


# Is a word …
Run Code Online (Sandbox Code Playgroud)

python algorithm traversal trie python-3.x

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

C#如何从列表中删除特定节点

我有以下课程

public class Item
{
    public int Id { get; set; }
    public int ParentId { get; set; }
    public string Content { get; set; }
    public bool IsLastItem { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

假设我有以下型号,我想删除IsLastItem = false没有孩子的物品.在此方案中,item4和item7应从列表中删除.

模型

我从数据库中获取了我的模型列表,并在代码块中模拟了它

var items = new List<Item>
{
    new Item
    {
        Id = 1,
        ParentId = 0,
        Content = "item1",
        IsLastItem = false
    },
    new Item
    {
        Id = 2,
        ParentId = 1,
        Content = "item2",
        IsLastItem = false
    },
    new Item …
Run Code Online (Sandbox Code Playgroud)

c# traversal list removechild

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

Javascript:深入遍历/迭代对象键

我正在尝试在Mongo中索引各种JSON对象。有时,JSON对象在其中包含键的某处有一个键.,这使Mongo抱怨:

MongoError: The dotted field 'foo (e.g. bar)' in 'key.0.prop foo (e.g. bar)' is not valid for storage.
Run Code Online (Sandbox Code Playgroud)

抛开这些数据不应该具有这种键,我想暂时解决这个问题,方法是通过删除包含点的文本来调整其中带有点的键。但是,这些键可以在对象中的任何位置,这需要同时遍历和修改键。例如,

{
  "foo": {
    "foo (e.g. bar)": "baz" 
  },
  "a": "b"
}
Run Code Online (Sandbox Code Playgroud)

会成为

{
  "foo": {
    "foo": "baz" 
  },
  "a": "b"
}
Run Code Online (Sandbox Code Playgroud)

基于transform(badKey)我要指定的某些功能。

迭代Javascript对象并根据某些条件修改键的最简单/最可靠的方法是什么?请注意,某些键可能嵌套在多个级别的深处,因此无法在此处进行简单的键值迭代。指向提供此功能的库的指针非常棒。

javascript iteration json traversal mongodb

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