【问题标题】:Binary Tree in order toString function C++二叉树为了字符串函数C++
【发布时间】:2015-02-17 04:13:06
【问题描述】:

我一直在使用这个函数有一段时间了,部分原因是这个赋值限制了我必须如何实现一个 toString 方法。我有创建结果字符串的原始方法,然后将其设置为等于应该按顺序返回二叉树字符串的方法。我提供了以下代码:

string Expression::toString() const{
    string result = "";
    result = inOrder(root, result);
    return result;
}

string Expression::inOrder(Node* r, string x) const{
  if(r->right==NULL && r->left == NULL){
    if(r->num != NULL){
        x += "(";
        char c = r->num + '0';
        string y(1, c);
        x += y;
        x += ")";
    } else{
        x += "(";
        x += r->op;
        x += ")";
    }
    return x;
   }
  x+=inOrder(r->left, x);
  x+=r->op;
  x+=inOrder(r->right, x);
}

由于常量函数不能操作任何外部变量,我的策略是在递归辅助函数中传递一个字符串参数,该函数将在传递节点时附加节点,然后最终返回该字符串。但是,我遇到了“访问冲突读取位置 0xcccccccc”错误。我知道这意味着我的递归有问题,尽管我似乎无法查明错误。提前致谢。

【问题讨论】:

    标签: c++ recursion tree tostring inorder


    【解决方案1】:

    您没有考虑独生子女的情况。如果r->leftNULLr->rightNULL,您将访问NULL 指针。

    【讨论】:

    • 谢谢,我早该注意到这一点的。
    【解决方案2】:

    您只正确处理了 4 个可能的案例中的两个案例,(r->right==NULL && r->left == NULL)(r->right!=NULL && r->left != NULL)。也就是说,如果r->leftr->right 中的一个恰好等于NULL,你的程序就会崩溃。

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 2022-01-03
      • 2022-01-18
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 2019-10-18
      • 1970-01-01
      相关资源
      最近更新 更多