首页 > 解决方案 > 给定一个 BST,我们需要检查所有根节点的值是否是其左右节点的平均值。如果不删除根

问题描述

给定一个二叉搜索树,我的任务是检查每个节点是否等于其左节点值和右节点值的平均值。如果条件失败,则删除特定节点。将根据给定的方法使用自下而上的方法,例如我可以想象,但我面临的挑战是,如果在出现时即堆栈下降时,如果条件失败并且左孩子为空,我返回右孩子 ....如果右为空我返回左孩子,但两者都有什么????那么有什么可能性,替换一个孩子也会改变较低孩子的平均值,那又如何呢?例如提供的是->

input:
        10
      /    \
     4      15
    / \       \
   1   9       16
      /
     7
output:
        10
      /    \
     4      16
    / \       
   1   7       

有人请帮我写代码。

标签: treebinary-search-tree

解决方案


我得到了一种方法。使用自下而上的方法:

首先检查当前节点是否是左右的平均值。如果没有问题,但如果不是平均,则通过查看以下 3 种情况删除当前节点:https ://www.geeksforgeeks.org/binary-search-tree-set-2-delete/

然后执行上述步骤,直到您到达树的根部,这绝对提供了解决方案的方法。如果我在任何步骤中错了,请纠正我。


推荐阅读