【问题标题】:What does "tree" refer to in breadth and depth based searches?在基于广度和深度的搜索中,“树”指的是什么?
【发布时间】:2011-12-06 14:12:13
【问题描述】:

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

树似乎是指“图表”中的某种构造?我相信这是我还没有学过的某种数学题。

breadth or depth first search 1

breadth or depth first search 2

【问题讨论】:

  • 如果您对基础知识不熟悉,您可能想阅读Wikipedia article(也可以是this one)。
  • 按从一般到特殊的顺序 -> 图形、树、二叉树、红/黑树。或者说树是图的一种,二叉树是树的一种,红黑树是二叉树的一种

标签: c++ tree


【解决方案1】:

有问题的树就是他们正在搜索的东西。如果不知道搜索的内容是什么,就很难理解搜索算法。

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

基本上就像树上的树枝。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 嗯,这可能太具体了。树应该是any 可收缩图,并且任何节点都可能是根节点。谁是父母谁是孩子,这取决于具体的实现。
    • @KerrekSB,如果这两个定义产生“树”的同构概念,这有关系吗?
    【解决方案3】:

    树是directed acyclic graph 的特例(基本上是一堆“节点”,箭头(“边”)相互指向,因此不能有箭头循环),其中以下两个条件持有:

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

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

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

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

    【讨论】:

    • 这就是我要找的……你一定是 CS 的研究生吗?
    • @ChrisAaker,不,本科。入门级课程取决于您的大学。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2016-02-16
    • 1970-01-01
    相关资源
    最近更新 更多