【发布时间】:2013-01-11 11:47:18
【问题描述】:
我正在尝试找到一种方法来找到不在二叉搜索树中的最小正数 ([0, INT_MAX))(最大整数)值。树具有所有正整数。我正在考虑沿着树的左侧向下移动。然后创建一个结构体值struct { int data; bool found; };,如果是最小值,我返回t/f。
我通过遍历左侧来做到这一点,如果root->data + 1 > left->data,则返回
左->数据+1
,否则向右。那么如果
root->data + 1
data
,然后是return root->data + 1。否则返回root->data or right->data,如果right 不为null,找到的值为false。我还必须考虑树中的最小值是否不为 0,然后返回 0。我不确定这是否是最好的方法。
感谢您的帮助。
编辑:对不起,我昨晚写的,当时我真的很累。我在循环中使用它,因此每次将其放入数组中会占用太多时间。我使用的是二叉搜索树,因此每次通过循环只需插入和删除 1 次即可完成,用最少的时间找到不在树中的最小值。
【问题讨论】:
-
什么是
max_int?这是您的程序定义的一些数字,还是可能的最大整数(即std::numeric_limits<int>::max)? -
二叉树还是二叉搜索树?
-
这是一个二叉搜索树。而max_int实际上是INT_MAX,它是最大可能的整数。
标签: c++ c algorithm binary-tree