如何实现二叉搜索树(在我的问题的参数范围内)?

我在一个数据结构课程中苦苦挣扎,而我的教授要么缺席,要么不回答。我要在一天左右的时间内完成作业,并且不知道从哪里回答。如果有人可以解释该怎么做以及如何做,将不胜感激。另外,我对StackOverflow还是陌生的,如果我格式化问题的格式或做错了什么,请在我投票之前让我知道,我想要一些帮助,谢谢。

  
      
  1. 编写方法nodeCount的定义,该方法返回二叉树中的节点数。将此方法添加到BinaryTree类中,并创建一个程序(带有main方法的主类)以测试此方法。 (注意:要测试算法,请先创建一个二叉搜索树)。

  2.   
  3. 编写一个方法swapSubtrees,该方法交换二叉树的所有左,右子树。将此方法添加到BinaryTree类中,并创建一个程序(带有main方法的主类)以测试此方法。 (注意:要测试算法,请先创建一个二叉搜索树)。

  4.   
bin_swnswn 回答:如何实现二叉搜索树(在我的问题的参数范围内)?

您可以找到有关如何在Java here中实现二进制树的教程。

要计算树中的节点,您应该尝试使用递归方法来对子树进行计数并求和。用伪代码:

int count(TreeNode node):
    if (node.hasNoMoreSubNodes):
        return 1
    else:
        sum = count(node.left) + count(node.right) + 1
        return sum

我不太确定第二个问题的意义。您可以执行以下操作(伪代码):

void swapSubTrees(TreeNode node):
    TreeNode tmp = node.left
    node.left = node.right
    node.right = tmp

这将交换二叉树的子树,但是在此之后,您拥有的结构不再是binary-search-tree,而只有binary-tree。因此,如果在二进制搜索树上执行此操作,将毫无用处。

希望这会有所帮助。

本文链接:https://www.f2er.com/3039083.html

大家都在问