Tag: 遍历

无recursion二叉树的后序遍历

没有使用recursion做二叉树的后序遍历的algorithm是什么?

迭代DFS与recursionDFS和不同的元素顺序

我写了一个recursion的DFSalgorithm来遍历图: void Graph<E, N>::DFS(Node n) { std::cout << ReadNode(n) << " "; MarkVisited(n); NodeList adjnodes = Adjacent(n); NodeList::position pos = adjnodes.FirstPosition(); while(!adjnodes.End(pos)) { Node adj = adjnodes.ReadList(pos); if(!IsMarked(adj)) DFS(adj); pos = adjnodes.NextPosition(pos); } } 然后我用堆栈写了一个迭代的DFSalgorithm: template <typename E, typename N> void Graph<E, N>::IterativeDFS(Node n) { Stack<Node> stack; stack.Push(n); while(!stack.IsEmpty()) { Node u = stack.Read(); stack.Pop(); […]

在嵌套的python字典和列表中查找所有出现的键

我有这样一本字典: { "id" : "abcde", "key1" : "blah", "key2" : "blah blah", "nestedlist" : [ { "id" : "qwerty", "nestednestedlist" : [ { "id" : "xyz", "keyA" : "blah blah blah" }, { "id" : "fghi", "keyZ" : "blah blah blah" }], "anothernestednestedlist" : [ { "id" : "asdf", "keyQ" : "blah blah" }, { […]

解释Morris inorder树遍历而不使用堆栈或recursion

有人可以帮助我理解下面的Morris inorder树遍历algorithm,而不使用堆栈或recursion? 我试图了解它是如何工作的,但它只是逃避我。 1. Initialize current as root 2. While current is not NULL If current does not have left child a. Print current's data b. Go to the right, ie, current = current->right Else a. In current's left subtree, make current the right child of the rightmost node b. Go to this left child, […]

从前序和后序列表重构树

考虑一下你有两个节点列表,你知道的是一个是某棵树的前序遍历的表示,另一个是同一棵树的后序遍历的表示。 我相信有可能从这两个列表中完全重构树,我想我有一个algorithm来做,但没有certificate它。 因为这将是一个硕士项目的一部分,我需要绝对肯定,这是可能的和正确的(mathcertificate)。 然而,这不是项目的重点,所以我想知道是否有一个源(即纸或书),我可以引用的证据。 (也许在TAOCP?有人可能知道该段?) 简而言之,我需要一个经过validation的algorithm,使用可引用的资源从前后遍历中重构树。 注意:有问题的树可能不是二进制的,或者是平衡的,或者任何会使它变得太简单的东西。 注2:只使用前序或后序列表会更好,但我不认为这是可能的。 注3:节点可以有任意数量的子节点。 注4:我只关心兄弟姐妹的顺序。 只有一个孩子的时候,左边或右边不重要。

获取修改的预定义树遍历模型(嵌套集)到<ul>中

我试图让我的数据是分层build立一个树遍历模型到一个<ul>为了显示在我的网站上。 这是我的代码: function getCats($) { // retrieve all children of $parent $query = "SELECT max(rght) as max from t_categories"; $row = C_DB::fetchSingleRow($query); $max = $row["max"]; $result ="<ul>"; $query = "SELECT * from t_categories where lft >=0 and rght <= $max"; if($rs = C_DB::fetchRecordset($query)){ $p_right =""; $p_left =""; $p_diff=""; while($row = C_DB::fetchRow($rs)){ $diff = $row["rght"] -$row["lft"]; […]

“for”和“Ruby”中的“each”

我刚刚有一个关于Ruby中的循环的问题。 这两种迭代方式是否有区别? # way 1 @collection.each do |item| # do whatever end # way 2 for item in @collection # do whatever end 只是想知道如果这些是完全一样的,或者如果可能有一个微妙的差异(可能当@collection是零)。

jquery与类find最接近的以前的兄弟姐妹

这里是我可以使用的粗糙的HTML: <li class="par_cat"></li> <li class="sub_cat"></li> <li class="sub_cat"></li> <li class="par_cat"></li> // this is the single element I need to select <li class="sub_cat"></li> <li class="sub_cat"></li> <li class="sub_cat current_sub"></li> // this is where I need to start searching <li class="par_cat"></li> <li class="sub_cat"></li> <li class="par_cat"></li> 我需要从.current_sub遍历,find最接近的前一个.par_cat并做它的东西。 .find("li.par_cat")返回.find("li.par_cat")的整个负载(我在页面上有大约30个)。 我需要瞄准单一的。 会真的很感激任何提示:)