设计二叉树,能够对二叉树进行中序遍历,遍历的操作为输出结点的值,设计主函数,输入一棵二叉树,按中序遍历顺序输出结点的值。二叉树的结点数不超过20。C++实现
时间: 2024-11-25 10:32:22 浏览: 20
在C++中,我们可以通过递归或迭代的方式来实现二叉树的中序遍历。这里我们选择递归方法,先创建一个简单的二叉树节点结构,然后定义一个` inorderTraversal `函数来进行中序遍历。
首先,我们需要定义一个二叉树节点:
```cpp
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
```
接下来是中序遍历的实现:
```cpp
vector<int> inorderTraversal(TreeNode* root) {
vector<int> result;
if (root != nullptr) {
// 中序遍历左子树
inorderTraversal(root->left);
// 将当前节点值加入结果
result.push_back(root->val);
// 中序遍历右子树
inorderTraversal(root->right);
}
return result;
}
// 主函数,接受用户输入构建二叉树,并进行中序遍历
void printInOrder(int input[], int n) {
if (n > 0) {
TreeNode* root = buildTree(input, n); // 假设有一个buildTree函数用于构建二叉树
vector<int> traversal = inorderTraversal(root);
for (int val : traversal) {
cout << val << " ";
}
cout << endl;
deleteTree(root); // 清理临时树
} else {
cout << "Empty tree" << endl;
}
}
// 递归构建二叉树(示例,实际需要根据输入格式自定义)
TreeNode* buildTree(int input[], int n) {
if (n <= 0)
return nullptr;
int mid = n / 2;
TreeNode* root = new TreeNode(input[mid]);
root->left = buildTree(input, mid);
root->right = buildTree(input + mid + 1, n - mid - 1);
return root;
}
// 示例输入数组构建二叉树
int input[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // 根据实际情况调整
int main() {
int n = sizeof(input) / sizeof(input[0]);
printInOrder(input, n);
return 0;
}
```
上面的代码首先创建了一个二叉树,然后调用`inorderTraversal`函数进行中序遍历,并打印出每个节点的值。注意,这只是一个基本框架,实际应用中你需要根据输入的具体形式(如数组、链表等)来调用`buildTree`函数构建树。
阅读全文