作者:浅笑二度 | 来源:互联网 | 2022-12-25 20:36
STL中没有二叉树结构,听说是因为实现方法太多。那用STL,有什么合适的结构可以让我实现一个二叉树的类呀?还是,干脆我不用STL,自己编一个二叉树的类算了?如果用STL写树并不见得好的
STL中没有二叉树结构,听说是因为实现方法太多。
那用STL,有什么合适的结构可以让我实现一个二叉树的类呀?
还是,干脆我不用STL,自己编一个二叉树的类算了?如果用STL写树并不见得好的话。
8 个解决方案
恩,自己编,呵呵
class CNode
{
public:
...
CNode * m_pLeft ;
CNode * m_pRight ;
} ;
在树型结构中,很多算法用递归写是很简单的
但,问题是,递归的性能(CPU要push,pop) 和 递归次数限制(stack overflow)
所以还是要考虑一下跌代的等效算法,参考些数据结构的书吧
OK,这个我知道。我的应用就是需要非常高速的算法,我是不用递归的。
现在的问题是我前面的数据结构都是用STL构建的,挺方便。现在这个树的结构是不是仍用STL构建好呢?还是不用STL?
用STL怎么构建树呀?
递归慢吗?只是调用函数的开销而已,相对复杂的算法那是微不足道的。
为了做出比较厉害的人工智能,我已经费了不少功夫(思考)。我无法忍受递归这样的开销影响计算的速度而减少搜索的数量——如果有避免的办法的话。
我看人工智能的书中搜索算法(深度优先等)都是非递归的,所以也想用非递归实现。当然,我也初学,以前没有写过类似的数据结构,不知道非递归实现是不是很复杂。先写一写试试,如果实在困难,后面再用递归的实现不迟。感谢rovoboy。
在非常费时的计算中,我只见过汉诺塔,速度慢的可怕。我本能的就认为如果改成非递归的一定会快很多,而且对递归很排斥——毕竟我很需要速度。
你的意思是说,如果本身的算法是很复杂的,那么递归的开销就足够忽略不计?不过毕竟游戏中的搜索可能要数万个点,真的影响会非常小吗?谢谢。