java - 当我使用 while 循环而不是如果我得到 TLE 错误
问题描述
这是用于按顺序遍历二叉树的简单代码。我只是有一个小小的疑问,如果我使用while
而不是if
这个,我会得到一个 TLE 错误。我想知道在什么情况下会卡住?
(我知道我们使用if
条件和递归不应该while
在这里使用,但只是为了理解我想知道)
你能用一个小例子来解释一下,把这棵小树作为这个循环中会被击中的地方吗?
1
/ \
2 3
void inorder(Node root) {
**while** (root != null) {
inorder(root.left);
count++;
inorder(root.right);
}
}
解决方案
树的根永远不会为空。因此,即使您迭代并遍历整个树并返回到inorder
方法的初始调用,根永远不会为 null,while 循环将再次执行,从而无限地遍历树。
例如,它从 1 开始,然后到 2,然后到 3。根的第一次迭代完成。但由于根永远不会为空,它将通过 2 然后 3 再次迭代......无限迭代树。
推荐阅读
- https - 带有 github 页面的 HTTPS - 未找到 www 子域;其他人工作
- python - Django抱怨在子查询中使用查询时必须在子查询中使用它
- python-3.x - 从远程服务器(Debian)上的 Laravel 控制器运行 Python3 时出现 Symfony/Process 异常
- php - 如何让 Google 报告 API 在 oauth2 访问令牌过期时刷新它?
- asp.net - 如何从asp.net core mvc中的HttpClient类调用[HttpPatch]类型的API动作
- angular - 与变量的双向绑定而不是使用发射器?
- python - 仅从 Python 中的句子中获取唯一的单词
- kubernetes - 在部署期间将文件保存到 Kubernetes pod
- excel - Excel - 使用 VBA 从 IE11 打开另一个 excel 文件
- python - 使用 pytest mocker 忽略 assert_has_calls 中的链式调用