当前位置: 首页 > 知识库问答 >
问题:

递归查找二叉树的最小值

顾琛
2023-03-14

我试图递归地在二叉树中找到最小值(不是二叉查找树)。让我困惑的是基本情况。如果TreeNode t为空,返回什么?因为我将使用返回的值将其与当前的最小值进行比较(我认为),我相信我返回的内容很重要。

public static Object min(TreeNode t)
{  

  if(t == null)
     return ;
  else
     instantiate an object named mini
     compare it to min(t.getLeft())
        if mini is greater than it, mini equals t.getLeft()
     compare mini to t.getRight())
        if mini is greater, mini equals t.getRight
     return mini

}

共有2个答案

罗鸿福
2023-03-14

如果这是C或C,您可以只使用指针。Java没有它。但是,您可以模拟类似的东西。
或者您可以定义一个包含数据和布尔值的对象。

class A { 
    int a; // or whatever you want
    bool is_null = false; // default value
} A_NULL = {0, true};

如果找到数据,则将数据放入对象并返回。如果您不只是返回A_NULL。

昌山
2023-03-14

您当前使用< code>Object作为< code>min的返回类型,但是您可能想要更具体的类型。例如,如果tree包含整数,那么返回类型将是< code>Integer或< code>Long。只要< code>min返回的类型有一个合理的最大值,这就是基本情况下应该返回的值。例如,如果你的树包含整数,那么返回< code>Integer。最大值。为什么?因为你可以保证其他所有东西都小于这个值,所以基本情况不会对结果产生负面影响。

 类似资料:
  • 我有一个<code>BinarySearchTree</code>,里面有Instance bankaccount的对象,这是我创建的一个类,所以基本上它只是一个二进制搜索树,我编写了一个方法,它将获取树并对其进行平衡,因为某些原因,它在平衡之前准确地打印出树: 现在,首先我有方法,它接受一个列表和一个并通过按顺序检查树数据来创建树数据的,因此它是一个排序数组。然后使用另一种方法以平衡的方式创建树

  • 很长一段时间以来,我一直在解决这项任务。我需要编写一个递归函数来检查每个节点是否小于其任何子节点。如果二叉树是最小堆,则返回 true,否则返回 false。 到目前为止我所拥有的:

  • 我创造了这个二叉查找树。我使用循环和递归编写了两种形式的插入方法。递归代码虽然看起来是正确的,但并不工作,我想不出问题是什么。当我使用insertRecursion方法创建树时,leftChild和rightChild总是为null。 }

  • 我试图用python写一个递归函数,给定一个二叉树,一个节点返回一个包含节点方向的字符串。我已经接近了,但是我的最终返回语句给了我路径和节点(我不需要节点)即LRLR4。 这是我到目前为止的代码: 有没有一种方法可以在不使用字符串输出末尾的节点的情况下实现这一点? 编辑:添加了所有实际代码,并且有问题的树包含每个节点的单个字母字符串。

  • 我试图从BST中删除最小节点,所以我在树中搜索,直到得到最小值(当root.leftnode为None时),然后将root.rightnode设置为根本身,以继续BST。 问题是,当我这样做之后检查树时,它不会显示曾经发生过的删除。 有人可以指出我正确的方向吗,任何建议都值得赞赏。

  • 我有TreeNode类——非二叉树(