该算法在遍历图中的节点方面做得很好.
Dictionary<Node, bool> visited = new Dictionary<Node, bool>();
Queue<Node> worklist = new Queue<Node>();
visited.Add(this, false);
worklist.Enqueue(this);
while (worklist.Count != 0)
{
Node node = worklist.Dequeue();
foreach (Node neighbor in node.Neighbors)
{
if (!visited.ContainsKey(neighbor))
{
visited.Add(neighbor, false);
worklist.Enqueue(neighbor);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以用它来查找图中的目标节点.工作清单在处理工作清单时将项目列出(或弹出).找到目标后,如何返回节点的完整路径?
更新 我试图弄清楚如何反转根路径.在根节点上调用该方法,之后,子节点可能有两个父节点,因此它不像在每个节点上调用父属性并遍历备份那么简单.
该方法的目标是找到路径,而不是迭代所有节点,或检查节点是否存在.
我需要在这里完成同样的事情,但是要使用任何矩阵,而不仅仅是方形矩阵.此外,遍历的方向需要相反.我试着编辑我在那里找到的代码,但无法弄明白.
谢谢.
有没有人知道一个库允许DOM使用类似选择器引擎的jquery遍历字符串?
请看下面的代码:
<HTML>
<HEAD>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<SCRIPT type="text/javascript">
function test(target) { alert(target.nodeName); }
</SCRIPT>
</HEAD>
<BODY>
<DIV>
<ul>
<li onclick="test(this)">This is fair</li>
<li onclick="test(this)">No its not</li>
<li onclick="test(this)">Why not</li>
<li onclick="test(this)">Becoz...</li>
</ul>
</DIV>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
功能测试接收目标(li节点)作为参数.
现在,我可以以某种方式将此变量转换为jQuery $(this)或$(e.target)任何其他jQuery变量,以便我可以使用jQuery方式遍历文档吗?
我试图从N树数据结构返回一个小部件列表.在我的单元测试中,如果我有大约2000个小部件,每个小部件都有一个依赖,我会遇到堆栈溢出.我认为正在发生的是for循环导致我的树遍历不是尾递归.什么是在scala中写这个的更好方法?这是我的功能:
protected def getWidgetTree(key: String) : ListBuffer[Widget] = {
def traverseTree(accumulator: ListBuffer[Widget], current: Widget) : ListBuffer[Widget] = {
accumulator.append(current)
if (!current.hasDependencies) {
accumulator
} else {
for (dependencyKey <- current.dependencies) {
if (accumulator.findIndexOf(_.name == dependencyKey) == -1) {
traverseTree(accumulator, getWidget(dependencyKey))
}
}
accumulator
}
}
traverseTree(ListBuffer[Widget](), getWidget(key))
}
Run Code Online (Sandbox Code Playgroud) 我一直在想为什么Traversable类型类需要a Functor和Foldable,而不仅仅是Foldable,因为它不使用任何部分Functor?
class (Functor t, Foldable t) => Traversable t where
traverse :: Applicative f => (a -> f b) -> t a -> f (t b)
sequenceA :: Applicative f => t (f a) -> f (t a)
Run Code Online (Sandbox Code Playgroud)
似乎Traversable的法则没有出现在基础4.6的文档中,这使我认为它们可以源于每个Traversable都是Functor的事实?
在迭代器模式论文的本质(第5.1节)中,它指出有一些自由定理traverse直接来自它的类型,但本文没有深入描述为什么会出现这种情况.
Traversable 基础4.7文档中描述的法律来自何处?
在一次采访中,我获得了一个功能:
f(n)= square(f(n-1)) - square(f(n-2)); for n>2
f(1) = 1;
f(2) = 2;
Here n is the level of an n-array tree. f(n)=1,2,3,5,16...
Run Code Online (Sandbox Code Playgroud)
对于n给定N-Array的每个级别,我必须在每个级别打印f(n)节点.例如:
At level 1 print node number 1 (i.e. root)
At level 2 print node number 2 (from left)
At level 3 print node number 3 (from left)
At level 4 print node number 5... and so on
Run Code Online (Sandbox Code Playgroud)
如果number of nodes(say nl)在任何级别n的less than f(n),则必须打印node number nl%f(n) …
A recent proposal on the Haskell libraries mailing list led me to consider the following:
ft :: (Applicative f, Monoid m, Traversable t)
-> (b -> m) -> (a -> f b) -> t a -> f m
ft f g xs = foldMap f <$> traverse g xs
Run Code Online (Sandbox Code Playgroud)
I noticed that the Traversable constraint can be weakened to Foldable:
import Data.Monoid (Ap (..)) -- Requires a recent base version
ft :: (Applicative f, Monoid m, Foldable t)
-> …Run Code Online (Sandbox Code Playgroud) 如何在javascript中选择DOM元素?
例如:
<div class="des">
<h1>Test</h1>
<div class="desleft">
<p>Lorem Ipsum.</p>
</div>
<div class="Right">
<button>Test</button>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
现在我该如何选择h1?这只是较大页面的一部分,因此无法使用getElementsByTagName(),因为其他页面可能会被选中.此外,由于h1稍后文档中可能还有其他内容,我无法将索引(正文)附加到上面.
有没有一种简单的方法可以选择,比如<h1>哪个标签属于desleft?我不能使用jQuery或任何其他库.
我有一个任意大小的大数组.这是一个方阵.我试图掌握如何沿着对角线遍历它/而不是\(我已经知道该怎么做).到目前为止,我有以下代码:
char[][] array = new char[500][500];
//array full of random letters
String arrayLine = "";
for (int y = 0; y < array.length; y++) {
for (int x = 0; x < array.length; x++) {
for (???) {
arrayLine = arrayLine + array[???][???];
}
}
System.out.println(arrayLine);
}
Run Code Online (Sandbox Code Playgroud)
我有三个循环,因为这是我做另一个对角线的方式:
for (int y = 0; y < array.length; y++) {
for (int x = 0; x < array.length; x++) {
for (int z = 0; z < array.length-y-x; …Run Code Online (Sandbox Code Playgroud)