c++ - 使用递归创建二叉树时出现堆栈溢出错误
问题描述
我被要求使用递归创建一棵二叉树。每个节点有 80% 的概率有一个左儿子和 90% 的概率有一个右儿子。我也使用随机数据键。我在这种递归方面遇到了麻烦,而且调试起来也很困难。知道可能是什么问题吗?
void BinaryTree::createTree()
{
if (!this->m_root)
{
srand((unsigned)time(NULL));
this->m_root = new Node(rand() % (200) + 1);
addRandomNodes(this->m_root);
}
}
void BinaryTree::addRandomNodes(Node* n)
{
if (!n)
return;
srand((unsigned)time(NULL));
int xL = rand() % (80) + 1;
int yR = rand() % (90) + 1;
//set Left-Son Recursively
if (xL > 10) {
Node* newLeft = new Node(rand() % (200) + 1);
n->setLeft(newLeft);
addRandomNodes(newLeft);
}
//set Right-Son Recursively
if (yR > 10) {
Node* newRight = new Node(rand() % (200) + 1);
n->setRight(newRight);
addRandomNodes(newRight);
}
return;
}
Node::Node() : m_left(nullptr), m_right(nullptr), m_data(0){}
Node::Node(int data) : m_left(nullptr), m_right(nullptr)
{
this->m_data = data;
}
解决方案
推荐阅读
- php - 如何使用
- javascript - 如何在反应js中增加地图功能
- web-crawler - Google Search Console 和 Page Speed Insights 抓取工具无法始终如一地加载页面
- laravel - 自动调用函数
- angular - 如何在角度使用代理解决 CORS 问题
- swift - 如何将零案例合并到失败案例
- react-native - React-Native-FBSDK 登录不返回电子邮件
- java - 重试失败的测试在 TestNg 7.0.0 中不起作用?
- c# - 如何在 Entity Framework Core 的复合键中配置与常量的关系?
- amazon-ecs - AWS ECS 容器卡在重启循环中