如何检查节点是不是为空

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-&gt;children[0]-&gt;children[0]-&gt;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,这表明你'当你下树时并没有将你的注意力向下移动,你只是在编写越来越多的步骤来找到你正在查看的元素。

编辑:提示:递归。通常,对于家庭作业,我宁愿不提供太多代码示例,但我将保留上面放置的代码,因为它主要展示了您当前方法的失败,而不是成为您的东西真的可以在你的作业中使用。

【讨论】:

以上是关于如何检查节点是不是为空的主要内容,如果未能解决你的问题,请参考以下文章

java判断字符串是不是为空

linux字符测试

php判断mysql数据库是不是为空

如何检查数据读取器是不是为空或为空

如何在 iOS 中检查 NSArray 是不是为空或为空?

如何检查 Recyclerview 是不是为空