ZBLOG

//// binary_tree.cpp// BinaryTreeApp//// Created by ljpc on 2018/5/3.// Copyright 2018年 ljpc. All rights reserved.//#include "binary_tree.h"BiTreeNode* CreatBiTree(char* s, int &i, int len)// 利用先序遍历创建二叉树// 参数:先序遍历字符串s,字符串初始下标i=0,字符

根据给定的代码框架,我们可以完成二叉树的创建和中序遍历。以下是修改后的代码:

#include "binary_tree.h"

BiTreeNode* CreatBiTree(char* s, int &i, int len)
{
    if (i >= len || s[i] == '#') // 遇到空节点或遍历结束时返回NULL
    {
        i++; // 更新下标位置
        return NULL;
    }

    BiTreeNode* node = new BiTreeNode(s[i]); // 创建当前节点

    i++; // 更新下标位置

    node->lchild = CreatBiTree(s, i, len); // 递归创建左子树
    node->rchild = CreatBiTree(s, i, len); // 递归创建右子树

    return node; // 返回当前节点
}

void InOrder(BiTreeNode* root)
{
    if (root == NULL)
        return;

    InOrder(root->lchild); // 中序遍历左子树

    cout << root->data;   // 输出当前节点数据

    InOrder(root->rchild); // 中序遍历右子树
}

假设先序遍历字符串为”AB##C#D###“,我们可以按照以下方式调用上述函数:

int main()
{
    char str[] = "AB##C#D###";
    
    int index = 0;
    
    BiTreeNode* root = CreatBiTree(str, index, strlen(str));
    
    InOrder(root);
    
    return 0;
}

执行以上代码将输出中序遍历结果:”BACD”。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9868

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?