新程序员的基本BST问题

时间:2011-03-30 03:29:11

标签: java tree binary-tree binary-search-tree

鉴于数据集(8,1,6,9,3,5,4,7),我绘制了以下二叉搜索树:

   8
  / \
  1  9
   \ 
    6
   / \ 
  3   7
   \ 
    5
   /
  4

我的问题是,如果我想从这棵树中删除根节点(8),我该怎么做呢?结果树结构会是什么样子?非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您需要从左子树或右子树中提升节点。你可以任意地,或者更好地,从最深的树上推广。

如果从左侧子树进行推广,请始终从左侧子树开始向右找到叶子。从树上剪下这片叶子,并把它作为新的根。

同样,如果从右侧子树进行推广,则通过左侧总是从右侧子树开始查找叶子。将这片叶子从树上剪掉,并将其作为新的根。

答案 1 :(得分:-2)

            1
             \
              6
            /  \
           3    9 
            \  /
             5 7
            /
           4   

树将如上所示。最好的方法是从头开始重新构建树,而不是有一些逻辑来移动树叶并使过程复杂化。