合并中的递归排序,快速排序和树遍历

合并中的递归排序,快速排序和树遍历

问题描述:

虽然学习不同的算法(如合并排序,快速排序或树遍历),但我观察到有两个递归调用紧跟在一起。合并中的递归排序,快速排序和树遍历

我无法完全理解。请简单地解释为什么我们使用两个递归调用?这是什么样的模式?

也有任何算法,其中有超过两个立即递归调用?

归并排序

m_sort(数字,温度,左,中); (数字,temp,mid + 1,right);

树遍历

预购(node.left)

预购(node.right)

有两个递归调用,因为同样的功能需要在两个不同的地方进行。在从根开始的树遍历的情况下,您想要递归地沿着左边,然后向右下。函数调用的方式工作,F调用preorder(node.left)并且对preorder(node.right)一无所知。当它进入node.left它现在在B。直到最后的A,一直进行相同的递归调用。当预订(node.left)从A然后返回时,B中的代码调用preorder(node.right)并且递归将继续。

这不是一个模式,因为在许多二进制结构上执行递归工作的本质,其中分而治之策略适用于将工作分成更小的部分,然后对每个部分执行递归seperately直到琐碎情况下被满足(例如,没有子女作为A的节点,当它返回)

pre-order traversal from wikipedia

来源: “Sorted binary tree preorder” 由Sorted_binary_tree.svgMiles衍生物工作:Pluketalk) - Sorted_binary_tree.svg。经由Wikimedia Commons在公共领域授权。