前言
之前有在做递归3006基于二叉链表的二叉树最长路径的求解问题中出现了一个问题 源代码如下:
string Get_longest(Tree &tree){ //输入树和末尾字符(这个空字符""会在串的末尾出现 如果你改成"1"也会在末尾加一个1) 返回最长串 s不能加地址符&引用
if(!tree->lchild&&!tree->rchild) return tree->data+"";//左右子树都没有 返回这个树的内容
string m,n;//m和n分别存储左右子树的最长串
if(tree->lchild) m=Get_longest(tree->lchild); //操作左子树 把空字符传递过去并接收后续最长串
if(tree->rchild) n=Get_longest(tree->rchild); //操作右子树 把空字符传递过去并接收后续最长串
if(m.length()<n.length()) return tree->data+n; //左右子树那个最长串长就输出那个串加上这个结点的字符
return tree->data+m;
}
这段语句貌似是没什么问题的,如果左右结点都没有,返回char类型的data加一个string类型的空字符"",但是实际运行的时候却显示了一个令人迷惑的东西: