Algorithm 如何表示用于DFS/BFS的数据

Algorithm 如何表示用于DFS/BFS的数据,algorithm,data-structures,tree,multiway-tree,Algorithm,Data Structures,Tree,Multiway Tree,我被指派使用各种搜索技术解决一个问题。问题与问题或问题非常相似。我的问题是,我不知道如何将数据表示为树 这是我关于如何做的猜测,但对于搜索来说没有多大意义 另一种方法是使用按行走时间排序的二叉树。然而,我仍然不确定我是否正确地解决了这个问题,因为搜索算法不一定需要二叉树 任何关于表示此数据的提示都将不胜感激。通常,当您使用树搜索来解决问题时,每个节点都表示世界的某些可能“状态”(例如,谁在桥的哪一边),每个节点的子节点表示所有可能的“后续状态”(从上一状态一次移动即可达到的新状态)深度优先搜索

我被指派使用各种搜索技术解决一个问题。问题与问题或问题非常相似。我的问题是,我不知道如何将数据表示为树

这是我关于如何做的猜测,但对于搜索来说没有多大意义

另一种方法是使用按行走时间排序的二叉树。然而,我仍然不确定我是否正确地解决了这个问题,因为搜索算法不一定需要二叉树


任何关于表示此数据的提示都将不胜感激。

通常,当您使用树搜索来解决问题时,每个节点都表示世界的某些可能“状态”(例如,谁在桥的哪一边),每个节点的子节点表示所有可能的“后续状态”(从上一状态一次移动即可达到的新状态)深度优先搜索则表示尝试一个选项直到其死角,然后备份到另一个选项可用的最后状态并进行尝试。广度优先搜索表示并行尝试许多选项,并查看第一个选项何时找到目标节点

根据实际的编码方式,您可以将其表示为多路树。每个节点可能包含当前状态,以及指向子节点的指针列表


希望这能有所帮助!

您可以使用以下内容:

public class Node
{
   public int root;
   public List<Node> neighbours;
   public Node(int x)
   {
       root=x;
   }
   public void setNeighboursList(List<Node> l)
   {
       neighbours = l;
   }
   public void addNeighbour(Node n)
   {
       if(neighbours==null) neighbours = new ArrayList<Node>();
       neighbours.add(n);
   }
   ...
} 

public class Tree
{
    public Node root;
    ....
}
公共类节点
{
公共int根;
公布邻居名单;
公共节点(INTX)
{
根=x;
}
公共无效设置列表(列表l)
{
邻居=l;
}
公共无效添加邻居(节点n)
{
如果(neights==null)neights=new ArrayList();
添加(n);
}
...
} 
公共类树
{
公共节点根;
....
}

要表示运行DFS/BFS的图形,还是表示DFS/BFS生成的树?