我試圖通過深度優先搜索在圖中找到特定節點。我目前的(簡單的)實現正在工作,但只返回bool
,即是否已找到該節點。深度優先搜索的返回路徑
我想添加的功能從操作返回的路徑,因此,例如,如果我在下面的例子中搜索5
,我會得到"1-2-3-5"
,而不是隻true
。
public class BinaryTreeNode
{
public List<BinaryTreeNode> Children { get; set; }
public int Data { get; set; }
}
public class DepthFirstSearch
{
private Stack _searchStack;
private BinaryTreeNode _root;
public DepthFirstSearch(BinaryTreeNode rootNode)
{
_root = rootNode;
_searchStack = new Stack();
}
public bool Search(int data)
{
BinaryTreeNode _current;
_searchStack.Push(_root);
while (_searchStack.Count != 0)
{
_current = _searchStack.Pop();
if (_current.Data == data)
{
return true;
}
foreach(BinaryTreeNode b in current.Children.AsEnumerable().Reverse())
_searchStack.Push(b);
}
return false;
}
}
任何幫助表示讚賞。
如果沒有找到,它會返回什麼? – Hogan
@Hogan在這種情況下,一個空字符串或類似的東西 – JCarter