【发布时间】:2011-07-21 18:48:24
【问题描述】:
我需要用以下(奇怪的)方式创建一个二叉搜索树:
我得到一个数组 (A[n])。 A[1] 成为树的根。
然后,我将 A[1]+A[2] 插入到根的左子树(subtree1,下面使用),同时将 A[1]-A[2] 插入到右子树(subtree2 ) 的根。
我将 A[1]+A[2]+A[3] 插入到 subtree1(subtree3)的左子树和 A[1]+A[2]-A[3] 到右子树子树 1(子树 4)。
然后,我将 A[1]-A[2]+A[3] 插入到 subtree2 (subtree5) 的左子树和 A[1]-A[2]-A[3] 到subtree2(subtree6)的右子树。
重复 subtree3、subtree4、subtree5、subtree6,直到到达数组的末尾。
所以,基本上,数组的第一个元素成为树的根,然后我向下移动:每个左子树的值都是其父元素加上数组的下一个元素的总和,每个右子树都有值其父元素与数组中下一个元素的差异。
我知道我需要使用递归的概念,但要以一种修改的方式。在这里输入我的问题并试图向除了我的大脑之外的其他人解释它实际上使我形成它的方式给了我一些尝试的想法但我可以看到我正在处理的问题是一个常见的问题所以也许你可以给我有一些关于如何使用递归来构建树的建议。
环顾其他问题和讨论,我知道有一项反对提出完整解决方案的政策,所以我想明确表示我不是在寻求解决方案,而是寻求指导。如果有人想看看,我可以向您展示我已经完成的工作。
【问题讨论】:
标签: recursion binary-tree parent-child binary-search-tree subtree