#include <iostream> #include <queue> using namespace std;struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} };// 创建二叉树 TreeNode* createBinaryTree() {TreeNode* root = new TreeNode(1);root->left = new TreeNode(2);root->right = new TreeNode(3);root->left->left = new TreeNode(4);root->left->right = new TreeNode(5);return root; }// 前序遍历 void preorder(TreeNode* root) {if (root == nullptr) return;cout << root->val << " ";preorder(root->left);preorder(root->right); }// 中序遍历 void inorder(TreeNode* root) {if (root == nullptr) return;inorder(root->left);cout << root->val << " ";inorder(root->right); }// 后序遍历 void postorder(TreeNode* root) {if (root == nullptr) return;postorder(root->left);postorder(root->right);cout << root->val << " "; }// 层次遍历 void levelOrder(TreeNode* root) {if (root == nullptr) return;queue<TreeNode*> q;q.push(root);while (!q.empty()) {TreeNode* current = q.front();q.pop();cout << current->val << " ";if (current->left != nullptr) q.push(current->left);if (current->right != nullptr) q.push(current->right);} }// 计算树高 int height(TreeNode* root) {if (root == nullptr) return 0;return max(height(root->left), height(root->right)) + 1; }// 计算节点数 int countNodes(TreeNode* root) {if (root == nullptr) return 0;return 1 + countNodes(root->left) + countNodes(root->right); }int main() {TreeNode* root = createBinaryTree();cout << "前序遍历: ";preorder(root);cout << endl;cout << "中序遍历: ";inorder(root);cout << endl;cout << "后序遍历: ";postorder(root);cout << endl;cout << "层次遍历: ";levelOrder(root);cout << endl;cout << "树高: " << height(root) << endl;cout << "节点数: " << countNodes(root) << endl;return 0; }