Logo
开发文档
QQ频道

C++写一段 二叉树算法

2023-11-03 15:56:29
|
浏览 432

二叉树是一种常见的数据结构,可以用来存储和操作具有层级关系的数据。在C++中,我们可以使用类来实现二叉树的算法。下面是一段用C++编写的二叉树算法示例。

复制代码
#include <iostream>

class TreeNode {
public:
    int value;
    TreeNode* left;
    TreeNode* right;

    TreeNode(int value) {
        this->value = value;
        left = nullptr;
        right = nullptr;
    }
};

class BinaryTree {
public:
    TreeNode* root;

    BinaryTree() {
        root = nullptr;
    }

    void insert(int value) {
        TreeNode* newNode = new TreeNode(value);
        if (root == nullptr) {
            root = newNode;
        } else {
            TreeNode* current = root;
            while (true) {
                if (value < current->value) {
                    if (current->left == nullptr) {
                        current->left = newNode;
                        break;
                    } else {
                        current = current->left;
                    }
                } else {
                    if (current->right == nullptr) {
                        current->right = newNode;
                        break;
                    } else {
                        current = current->right;
                    }
                }
            }
        }
    }

    void preOrderTraversal(TreeNode* node) {
        if (node == nullptr) {
            return;
        }
        std::cout << node->value << " ";
        preOrderTraversal(node->left);
        preOrderTraversal(node->right);
    }
};

int main() {
    BinaryTree tree;
    tree.insert(5);
    tree.insert(3);
    tree.insert(7);
    tree.insert(1);
    tree.insert(4);

    std::cout << "Pre-order traversal: ";
    tree.preOrderTraversal(tree.root);
    std::cout << std::endl;

    return 0;
}

这段代码实现了二叉树的创建和前序遍历算法。首先,我们定义了一个TreeNode类,表示二叉树的节点。每个节点包含一个整数值、一个左孩子节点和一个右孩子节点。

然后,我们定义了BinaryTree类,用于创建和操作二叉树。它包含一个指向根节点的指针。insert方法用于向二叉树插入节点,根据节点值的大小确定插入的位置。preOrderTraversal方法用于执行前序遍历,即先访问根节点,然后递归地访问左子树和右子树。

main函数中,我们创建了一个二叉树,并向其中插入了一些节点。然后,我们调用preOrderTraversal方法对二叉树进行前序遍历,并输出结果。

希望这篇文章对你有所帮助!如果你有任何问题或者需要进一步的帮助,请随时告诉我。

我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;