“树”在基于广度和深度的搜索中引用了什么?

时间:2011-10-13 01:00:08

标签: c++ tree

我需要一些有关广度/深度优先搜索的C ++代码的工作片段。另外,在下面的链接中,当使用术语树时,它是引用二叉树还是更具特色的红色和黑色树?或者这是一种更抽象的树?有没有人有这些搜索的工作代码的链接......以及构建树?

树似乎在“图形”中引用了某种构造?我相信这是我尚未采用的某种数学方法。

breadth or depth first search 1

breadth or depth first search 2

3 个答案:

答案 0 :(得分:2)

有问题的树是他们正在搜索的东西。在不知道搜索算法正在搜索的内容的情况下,很难理解搜索算法。

树是一种图形。图是一系列节点(可能代表某些数据),具有某些节点之间的连接。树是节点之间的连接形成层次结构的图。对于图中的任何给定节点,它只有一个指向它的“父”,它指向零个或多个子节点。并且节点不能形成圆圈;父母不能指向指向该父母的孩子。

基本上就像树上的树枝一样。

答案 1 :(得分:0)

术语“树”是指可以抽象地看作树的任何数据结构。

“树”是一种数据结构,其中有父节点和子节点,每个子节点都有一个父节点,单个“根”节点没有父节点。

如果树中的节点有多个父节点,则称为“图形”。

答案 2 :(得分:0)

树是directed acyclic graph的特殊情况(基本上是一堆带有箭头的“节点”('edge')指向彼此,这样就不会有一个箭头循环)其中有两个条件:

  • 没有节点有多个传入边
  • 存在一个可识别的节点(“根”),所有其他节点都可以从该节点到达。

通过某个节点N的出局边缘可到达的节点通常称为N的子节点。

广度优先和深度优先搜索适用于通用树(实际上,它们适用于所有DAG)。但是有一些更具体的类型:

  • 二叉树是树,其中没有节点有两个以上的传出边;传出边被标记,通常为“左”和“右”
  • 搜索树是二叉树,每个节点都有一个键;此外,某个节点N中的键大于其左边缘上的子节点(如果有的话)并且小于其右边缘上的子节点(如果有的话)。这样可以非常快速地搜索特定密钥。
  • 红黑树是一种特定类型的搜索树,其中moderately complex algorithm用于确保所有键与根的距离大致相同。