求解sortedArrayToBST递归函数输出顺序与预期不符的原因
逻辑说明
你的代码实现的是升序数组转高度平衡二叉搜索树的功能,我们直接代入输入nums = [1,2,3]拆解执行流程:
- 初始调用
constructBST(0, 2),计算区间中点mid = (0+2)//2 = 1,取nums[1] = 2作为整棵树的根节点 - 递归构造左子树:调用
constructBST(0, 0),中点为0,取nums[0] = 1作为左子树根,其左右子区间均不合法(l>r),返回空,因此1是叶子节点 - 递归构造右子树:调用
constructBST(2, 2),中点为2,取nums[2] = 3作为右子树根,同样左右子树为空,是叶子节点
最终生成的树结构为:
2 / \ 1 3
你看到的输出[2,1,3]是算法题平台通用的二叉树序列化格式,采用层序遍历规则:从上到下逐层遍历,同一层从左到右输出节点值,和上面的树结构完全匹配。
你预期的[1,3,2]实际是这棵树的后序遍历结果,后序遍历规则为「左子树→右子树→根节点」,刚好对应这个输出顺序,属于对遍历规则的误解导致的预期偏差。
内容的提问来源于stack exchange,提问作者bbluo22
相关产品推荐
相关产品推荐

