#include <iostream>
// 定义二叉树节点
struct BinaryTreeNode {
int data;
BinaryTreeNode* left;
BinaryTreeNode* right;
BinaryTreeNode(int val) : data(val), left(nullptr), right(nullptr) {}
};
// 构建二叉树
BinaryTreeNode* buildBinaryTree() {
int val;
std::cin >> val;
if (val == -1) { // 如果输入-1则表示该节点为空
return nullptr;
}
BinaryTreeNode* node = new BinaryTreeNode(val);
node->left = buildBinaryTree();
node->right = buildBinaryTree();
return node;
}
// 中序遍历输出二叉树节点值
void printBinaryTreeInOrder(BinaryTreeNode* node) {
if (node != nullptr) {
printBinaryTreeInOrder(node->left);
std::cout << node->data << " ";
printBinaryTreeInOrder(node->right);
}
}
int main() {
BinaryTreeNode* root = buildBinaryTree();
std::cout << "中序遍历结果:";
printBinaryTreeInOrder(root);
return 0;
}
上述代码通过递归实现输入并构建一颗二叉树,然后对该树进行了中序遍历,并输出所有节点的值,输出结果即为中序遍历的结果。