二叉树

生成一个二叉树:

include<bits/stdc++.h>
using namespace std;
// 二叉树节点结构
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;

// 构造函数
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}

};

// 二叉树类
class BinaryTree {
private:
TreeNode* root;

// 私有辅助函数:插入节点
TreeNode* insertNode(TreeNode* node, int val) {
    if (node == nullptr) {
        return new TreeNode(val);
    }
    
    if (val < node->val) {
        node->left = insertNode(node->left, val);
    } else {
        node->right = insertNode(node->right, val);
    }
    
    return node;
}

// 私有辅助函数:前序遍历
void preOrder(TreeNode* node) {
    if (node == nullptr) return;
    
    cout << node->val << " ";
    preOrder(node->left);
    preOrder(node->right);
}

// 私有辅助函数:中序遍历
void inOrder(TreeNode* node) {
    if (node == nullptr) return;
    
    inOrder(node->left);
    cout << node->val << " ";
    inOrder(node->right);
}

// 私有辅助函数:后序遍历
void postOrder(TreeNode* node) {
    if (node == nullptr) return;
    
    postOrder(node->left);
    postOrder(node->right);
    cout << node->val << " ";
}

// 私有辅助函数:销毁树
void destroyTree(TreeNode* node) {
    if (node == nullptr) return;
    
    destroyTree(node->left);
    destroyTree(node->right);
    delete node;
}

public:
// 构造函数
BinaryTree() : root(nullptr) {}

// 析构函数
~BinaryTree() {
    destroyTree(root);
}

// 插入节点
void insert(int val) {
    root = insertNode(root, val);
}

// 前序遍历
void preOrderTraversal() {
    cout << "前序遍历: ";
    preOrder(root);
    cout << endl;
}

// 中序遍历
void inOrderTraversal() {
    cout << "中序遍历: ";
    inOrder(root);
    cout << endl;
}

// 后序遍历
void postOrderTraversal() {
    cout << "后序遍历: ";
    postOrder(root);
    cout << endl;
}

};

// 测试函数
int main() {
BinaryTree tree;

// 插入节点
tree.insert(50);
tree.insert(30);
tree.insert(70);
tree.insert(20);
tree.insert(40);
tree.insert(60);
tree.insert(80);

// 遍历二叉树
tree.preOrderTraversal();  // 根左右
tree.inOrderTraversal();   // 左根右
tree.postOrderTraversal(); // 左右根

return 0;

}

知识点明天再说

posted @ 2025-08-07 21:04  暗神酱  阅读(5)  评论(0)    收藏  举报