【发布时间】:2013-11-13 09:30:57
【问题描述】:
我想将已排序的整数数组转换为二叉搜索树。我相信我明白如何做到这一点。我在下面发布了我的伪代码。我无法想象的是递归实际上是如何工作的。
所以如果我的数组是 1、2、3、4、5... 我首先将 3 作为我的 BST 的根。然后我将2设为3的左子节点。那么我是否将1设为2的左子节点,然后回到2?我不明白递归是如何贯穿整个过程的......
提前致谢,如果这个问题解释得不好,我们深表歉意。我不想要明确的代码,但如果有人可以帮助我了解递归如何解决问题(即以什么顺序访问哪些节点/调用堆栈如何运行),我将不胜感激
伪代码:
步骤 1. 创建一个接收整数数组、整数开头和整数结尾的函数。 开始 = 0,结束 = 整数数组大小 - 1。
第 2 步。创建一个整数中间,等于 (start + end)/2。
步骤 3. 测试是否开始 > 结束。
第 4 步。如果是,则返回 null。
第 5 步。否则,将中间索引处的值设为树的根。
步骤 6. 将根的左节点设置为等于 (array, start, middle - 1) 的函数。
步骤 7. 设置根的右节点等于函数 (array, middle + 1, end)。
【问题讨论】:
标签: arrays recursion add binary-search-tree sorted