[精品]【数据结构】二叉树实验报告
    二叉树实验报告
    一、实验目的:
    1.掌握二叉树的基本操作;
    2.理解二叉树的性质;
    3.熟悉二叉树的广度优先遍历和深度优先遍历算法。
    二、实验原理:
    1.二叉树是一种树形结构,由n(n>=0)个节点组成;
    2.每个节点最多有两个子节点,称为左子节点和右子节点;
    3.二叉树的遍历分为四种方式:前序遍历、中序遍历、后序遍历和层次遍历。
    三、实验环境:
    1.编程语言:C++;
    2.编译器:Dev-C++。
    四、实验内容:
    1.定义二叉树节点结构体:
    struct BinaryTreeNode
    {
        int data;                              // 节点数据
        BinaryTreeNode *leftChild;              // 左子节点指针
        BinaryTreeNode *rightChild;            // 右子节点指针
    };
    2.初始化二叉树:
    queue<BinaryTreeNode *> q;                      // 使用队列存储节点
        q.push(root);
    int i = 1;                                      // 创建子节点
        while (!q.empty() && i < length)
        {
            BinaryTreeNode *node = q.front();
            q.pop();
            if (data[i] != -1)                          // 创建左子节点
            {
                BinaryTreeNode *leftChild = new BinaryTreeNode;
                leftChild->data = data[i];
                leftChild->leftChild = nullptr;
                leftChild->rightChild = nullptr;
                node->leftChild = leftChild;
                q.push(leftChild);
            }
            i++;
            if (data[i] != -1)                          // 创建右子节点
            {
                BinaryTreeNode *rightChild = new BinaryTreeNode;
                rightChild->data = data[i];
                rightChild->leftChild = nullptr;
                rightChild->rightChild = nullptr;
                node->rightChild = rightChild;
                q.push(rightChild);
            }
            i++;
        }
        return root;
    }
    3.前序遍历二叉树:
    五、实验结果:
    输入:int data[] = {1, 2, 3, 4, -1, -1, 5, 6, -1, -1, 7, 8};
    输出:
    前序遍历结果:1 2 4 5 3 6 7 8
    中序遍历结果:4 2 5 1 6 3 7 8
    后序遍历结果:4 5 2 6 8 7 3 1
    层次遍历结果:1 2 3 4 5 6 7 8
    通过本次实验,我深入理解了二叉树的性质和遍历方式,并掌握了二叉树的基本操作。在实践中,我发现层次遍历需要使用队列来存储节点,而三种递归遍历方式则是通过不断递归子树来完成的。在应用时,需要根据实际问题选择不同的遍历方式。
二叉树的基本性质

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。