小墨墨墨 2023-02-09 21:07 采纳率: 88.2%
浏览 8
已结题

数组二叉树层序创建漏节点

二叉树创建问题
二叉树从数组中创建,按照层序遍历的方法,但是当二叉树的结构是一个非完全的,比如只有右子树之类的创建的时候,网上的递归代码往往会漏掉根节点,请问正确的写法应该怎么写啊

  • 写回答

2条回答 默认 最新

  • GISer Liu 2023-02-09 21:45
    关注

    以下答案引用自GPT-3大模型,请合理使用:

    二叉树的创建问题一般来说有两种方法,一种是递归的方法,另一种是非递归的方法。

    递归的方法是按照层序遍历的方法,即通过递归来创建二叉树的各个子树,直到创建完整的二叉树。这种方法适用于创建完整的二叉树。

    非递归的方法是不通过递归来创建二叉树的各个子树,而是先创建根节点,然后再把根节点作为创建子树的一个参数进行创建,这种方法适用于创建非完整的二叉树。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-02-11 02:02
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以参考下这篇文章:解决二叉树的编程问题
    • 除此之外, 这篇博客: [数据结构]——根据二叉树创建字符串中的 你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

      void _tree2str(struct TreeNode* t,char* ptr)
      {
          if(t == NULL)
              return;
          char buff[12] = {'\0'};
          sprintf(buff,"%d",t->val);
          strcat(ptr,buff);
          
          if(t -> left == NULL)
          {
              if(t->right == NULL)
              {
                  return;
              }
              else
              {
                  strcat(ptr,"()");
              }
          }
          else
          {
              strcat(ptr,"(");
              _tree2str(t->left,ptr);
              strcat(ptr,")");
          }
          
          if(t->right == NULL)
          {
              return;
          }
          else
          {
              strcat(ptr,"(");
              _tree2str(t->right,ptr);
              strcat(ptr,")");
          }
      }
      char* tree2str(struct TreeNode* t) {
          char* ptr = (char*)malloc(1024*1024);
          _tree2str(t, ptr);
          return ptr;
      }
      

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

报告相同问题?

问题事件

  • 系统已结题 2月18日
  • 已采纳回答 2月10日
  • 创建了问题 2月9日

悬赏问题

  • ¥15 windows server 2022 datacenter安全策略配置 没有权限问题
  • ¥20 寻找dspace有偿技术支持
  • ¥30 深度学习的模型融合问题
  • ¥20 数电实验Verilog编程
  • ¥15 机器人MATLAB仿真示教占内存过大
  • ¥15 JSR233已经使用但是仍无法将csv数据放到一个list里显示出来,如何解决?
  • ¥15 I350 Gigabit Network
  • ¥15 关于#abap#的问题,请各位专家解答!
  • ¥20 内网通过公网访问外网问题
  • ¥20 谁有这个东西 继续教育的