言辞. 发表于 2022-4-24 22:39:47

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

#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 = { 1,2,3,4,5,6,7,8,9,10 }; // 输入序列
        TreeNode* T = NULL; //初始化
        // 问题5:下面这几句话产生的效果是什么?
        for (int i = 0; i < 10; i++) {
                T = Insert(seq, 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);
}

Someboy 发表于 2022-5-31 17:03:56

这个是二叉排序树吧
页: [1]
查看完整版本: 关于二叉树的简单操作程序里有几个问题求大佬教教,并且程序显示you'cuo