Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 为什么深度优先搜索的空间复杂度不表示为O(n)?_Algorithm_Depth First Search_Breadth First Search - Fatal编程技术网

Algorithm 为什么深度优先搜索的空间复杂度不表示为O(n)?

Algorithm 为什么深度优先搜索的空间复杂度不表示为O(n)?,algorithm,depth-first-search,breadth-first-search,Algorithm,Depth First Search,Breadth First Search,算法相对较新,所以如果我遗漏了一些明显的东西,请原谅 我知道深度优先搜索的空间复杂度通常表示为O(h),其中h是树的高度,而广度优先搜索的复杂度是O(n),其中n是树中的节点数 我理解这样的解释(比如在这个答案中),在BFS中最坏的情况下,所有节点都在一个级别上,这意味着我们必须在遍历它们之前将所有节点排队。我也知道树的空间复杂度将由其高度决定,因为这将决定堆栈上需要存储的最大层 我不明白的是,为什么这不能用O(n)来表示。按照与BFS最坏情况类似的推理,DFS最坏情况不是所有节点都位于一个单独

算法相对较新,所以如果我遗漏了一些明显的东西,请原谅

我知道深度优先搜索的空间复杂度通常表示为O(h),其中h是树的高度,而广度优先搜索的复杂度是O(n),其中n是树中的节点数

我理解这样的解释(比如在这个答案中),在BFS中最坏的情况下,所有节点都在一个级别上,这意味着我们必须在遍历它们之前将所有节点排队。我也知道树的空间复杂度将由其高度决定,因为这将决定堆栈上需要存储的最大层

我不明白的是,为什么这不能用O(n)来表示。按照与BFS最坏情况类似的推理,DFS最坏情况不是所有节点都位于一个单独的谱系之下吗?因此,在最坏的情况下,树的高度将等于它拥有的节点数。那么,为什么这不表示为O(n)呢


谢谢

是的,但那不是一棵真正的树,它是一个链表。大O是抽象的;当它声称一棵树的搜索是lg(n)时,它意味着一棵适当平衡的树,而不是一棵病态构造的树