c – 二进制树堆栈溢出

c – 二进制树堆栈溢出,第1张

概述我根据Alex Allain的 example found here创建了一个二叉树.它在向它添加大约5000-6000个元素后抛出了一个堆栈溢出异常.知道如何防止堆栈溢出?原因是Insert()以递归方式调用自身. 2013年3月6日更新 这是我如何重构代码以避免堆栈溢出: void Insert(Key_T key, Value_T val, QuickMapNode<Key_T, Value 我根据Alex Allain的 example found here创建了一个二叉树.它在向它添加大约5000-6000个元素后抛出了一个堆栈溢出异常.知道如何防止堆栈溢出?原因是Insert()以递归方式调用自身.

2013年3月6日更新

这是我如何重构代码以避免堆栈溢出:

voID Insert(Key_T key,Value_T val,QuickMapNode<Key_T,Value_T> *leaf){    while (true)        if(key < leaf->key)        {            if(leaf->left) leaf = leaf->left;            else            {                leaf->left = new QuickMapNode<Key_T,Value_T>;                leaf->left->key = key;                leaf->left->val = val;                leaf->left->parent = leaf;                leaf->left->left = NulL;    // Sets the left child of the child node to null                leaf->left->right = NulL;   // Sets the right child of the child node to null                break;            }          }        else if (key >= leaf->key)        {            if(leaf->right) leaf = leaf->right;            else            {                leaf->right = new QuickMapNode<Key_T,Value_T>;                leaf->right->key = key;                leaf->right->val = val;                leaf->right->parent = leaf;                leaf->right->left = NulL;  // Sets the left child of the child node to null                leaf->right->right = NulL; // Sets the right child of the child node to null                break;            }        }}
解决方法 制作非递归的插入算法.您只需要搜索插入位置,这样就不需要堆栈调用了. 总结

以上是内存溢出为你收集整理的c – 二进制树堆栈溢出全部内容,希望文章能够帮你解决c – 二进制树堆栈溢出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1214813.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存