鱼C论坛

 找回密码
 立即注册
查看: 1642|回复: 1

关于二叉树的简单操作程序里有几个问题求大佬教教,并且程序显示you'cuo

[复制链接]
发表于 2022-4-24 22:39:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdlib.h>
#include<iostream>
using namespace std;

struct TreeNode {
        int Element; //定义根结点
        struct TreeNode* Left; //左孩子指针
        struct TreeNode* Right; //右孩子指针
};

// 问题1: 简述该函数的功能
TreeNode* Insert(int X, TreeNode* T) {
        if (T == NULL) {
                T = (TreeNode*)malloc(sizeof(struct TreeNode)); //申请新结点
                if (T == NULL)
                        exit(-1); //退出
                else {
                        T->Element = X;
                        T->Left = NULL;
                        T->Right = NULL;
                }
        }

        // 问题2:下面3行的作用?
        else if (X < T->Element) {
                T->Left = Insert(X, T->Left); //
        }
        // 问题3:下面3行的作用?
        else if (X > T->Element) {
                T->Right = Insert(X, T->Right);
        }
        return T;  // 返回插入元素的地址
}

void TraversePre(TreeNode* T) {
        if (T == NULL)
                return;
        else {
                printf("%d ", T->Element);
                TraversePre(T->Left);
                TraversePre(T->Right);
        }
}// 先序


void TraverseMid(TreeNode* T) {
        if (T == NULL)
                return;
        else {
                printf("%d ", T->Left);
                TraversePre(T->Element);
                TraversePre(T->Right);
}// 中序

void TraverseBack(TreeNode* T) {
        if (T == NULL)
                return;
        else {
                printf("%d ", T->Left);
                TraversePre(T->Right);
                TraversePre(T->Element);
}// 后序

TreeNode* Find(int X, TreeNode* T) {
}// 问题4:查找:求大佬教教

void main()
{
        int seq[10] = { 1,2,3,4,5,6,7,8,9,10 }; // 输入序列
        TreeNode* T = NULL; //初始化
        // 问题5:下面这几句话产生的效果是什么?
        for (int i = 0; i < 10; i++) {
                T = Insert(seq[i], T);
        }
        printf("\n先序遍历输出序列为:\n");  // 实现二叉树的先序遍历
        TraversePre(T);  // 先编子程序,然后在这里调用子程序,实现二叉树的中序遍历
        printf("\n中序遍历输出序列为:\n");
        TraverseMid(T);  // 先编子程序,然后在这里调用子程序,实现二叉树的后序遍历
        printf("\n后序遍历输出序列为:\n");
        TraverseBack(T);

        // Find函数实现的功能是:在上述二叉树T中查找某个数X,如果查找成功,则返回X的地址(16进制即可);否则,返回NULL;
        int X = 41;
        TreeNode* pos = NULL;
        pos = Find(X, T);
        if (pos != NULL)
                printf("\n%d的位置为 %x, 对应数据为%d\n", X, pos, pos->Element);
        else
                printf("\n%d未找到.\n", X);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-31 17:03:56 From FishC Mobile | 显示全部楼层
这个是二叉排序树吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 21:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表