如何检查节点是不是为空
Posted
技术标签:
【中文标题】如何检查节点是不是为空【英文标题】:How to Check if a node is null如何检查节点是否为空 【发布时间】:2019-06-20 23:02:48 【问题描述】:所以我正在做leetcode问题589。我只是想看看当下一个节点为空时我是否可以返回向量。但是每当我运行代码时,我都会收到此错误:
第 933 行:字符 34:运行时错误:引用绑定到类型为 'struct Node *' (stl_vector.h) 的空指针
我不知道如何解决这个问题。
此节点在树中为空,因为 root->children[0]->children[0] 没有子节点。但是如何检查 root->children[0]->children[0] 是否没有孩子?
int i=1;
vector<int> result;
class Solution
public:
vector<int> preorder(Node* root)
if ((root->children[0]->children[0]->children[0])==NULL)
return result;
return result;
;
【问题讨论】:
之前有人告诉过你minimal complete examples。 真的不知道您希望任何人能够从所提供的信息中回答这个问题。至少您可以发布Node
的定义并解释在您的数据结构中如何表示缺少孩子。
也完全不清楚root->children[0]->children[0]->children[0]
与“下一个节点”的关系,这显然是您要检查的内容。
我很确定您正试图在某处访问越界元素。
root->children[0]->children[0]->children[0] 应该是指向最左边节点的左孩子,我加了一张问题图片跨度>
【参考方案1】:
我认为答案比这更仔细。在不知道其余代码的情况下,很难说在这种情况下您可以绝对保证存在什么。但是完全的偏执狂就像
if (root == NULL || root->children == NULL || root->children[0] == NULL
|| root->children[0]->children == NULL
|| root->children[0]->children[0] == NULL
|| root->children[0]->children[0]->children == NULL
|| root->children[0]->children[0]->children[0] == NULL)
我很确定这里存在某种设计缺陷......我认为这既是这样的事实,即有多个跃点要通过,并且持有先前节点的东西是root
,这表明你'当你下树时并没有将你的注意力向下移动,你只是在编写越来越多的步骤来找到你正在查看的元素。
编辑:提示:递归。通常,对于家庭作业,我宁愿不提供太多代码示例,但我将保留上面放置的代码,因为它主要展示了您当前方法的失败,而不是成为您的东西真的可以在你的作业中使用。
【讨论】:
以上是关于如何检查节点是不是为空的主要内容,如果未能解决你的问题,请参考以下文章