噜啦噜啦噜呼呼呼 2023-10-31 23:40 采纳率: 70.7%
浏览 8
已结题

中序线索化二叉树,找最后一个结点

在带头结点的中序线索树中查找中序序列最后一个结点


#include "tbtree.cpp"
ElemType InOrder(TBTNode *tb)
{
    if(tb->rtag==1)
        return tb->data;
    ElemType ch;
    ch=InOrder(tb->rchild);
}

int main()
{
    char str[]="A(B(D(,G)),C(E,F))"; 
    TBTNode *tb;
    char data;
    CreateTBTree(tb,str); 
    printf("二叉树为:");
    DispTBTree(tb);
    printf("\n");
    printf("求二叉树的中序遍历序列中的最后一个结点值为:");
    printf("%c",InOrder(tb));
    return 0;
}

img


tbtree.cpp是我自己定义的一个关于中序线索二叉树的算法
为什么我的没有输出啊,哪一步有问题吗?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-01 09:00
    关注

    【以下回答由 GPT 生成】

    问题出在FindLastNodeValue函数中的递归调用时没有返回值。在递归调用之后,应该将其返回值作为结果返回给上一层。针对这个问题,可以在FindLastNodeValue函数中添加返回语句来修复。

    以下是修改后的代码:

    #include "tbtree.cpp"
    
    // 在中序线索树中查找中序序列的最后一个结点的值
    ElemType FindLastNodeValue(TBTNode *tb) {
      if(tb->rtag == 1)
        return tb->data;
    
      return FindLastNodeValue(tb->rchild); // 添加返回语句
    }
    
    int main() {
      // 创建二叉树
      char str[]="A(B(D, G), C(E, F))"; 
      TBTNode *tb;
      CreateTBTree(tb, str);
    
      printf("二叉树为:");
      DispTBTree(tb);
      printf("\n");
    
      printf("求二叉树的中序遍历序列中的最后一个结点的值为:");
      printf("%c", FindLastNodeValue(tb));
    
      return 0;
    }
    

    这样修改之后,代码应该能够成功输出结果。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月4日
  • 创建了问题 10月31日

悬赏问题

  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥15 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)