我想将排序的整数数组转换为二叉搜索树。我相信我明白如何做到这一点。我在下面发布了我的伪代码。我无法想象的是递归实际上是如何工作的。
因此,如果我的数组是 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) 的函数。