我在一次采访中被问到一个问题,用一个带有递归和没有递归的排序数组构建一个平衡的二叉搜索树。我能够使用递归提出一个解决方案,但没有提出没有递归的解决方案。任何人都可以在不使用递归的情况下提供此问题的解决方案吗?
答案 0 :(得分:1)
您可以创建和使用自己的堆栈(例如,作为数组或链接列表),并从循环内部访问它。
数组或列表中的每个单元格都需要存储有关树的基本信息,否则这些信息将由递归函数维护。
您的递归版本中的某些信息(例如深度计数器)可能由局部变量处理。对于某些问题,您可以将所有此类信息从堆栈中移出到本地变量中;在这种情况下,您根本不需要显式堆栈......