用c++完成1.建立一棵二叉树,所有值均为整数(采用二叉链表存储方式) ;2.输出该二叉树的前序、中序、后序遍历序列; 3. 把所有结点的值修改为其绝对值。
时间: 2024-12-22 21:29:45 浏览: 13
在C++中,我们可以创建一个简单的二叉链表节点结构体来表示二叉树,并实现遍历和绝对值修改功能。首先,我们需要定义一个`Node`结构:
```cpp
struct Node {
int value;
Node* left;
Node* right;
Node(int val) : value(val), left(nullptr), right(nullptr) {}
};
```
接下来,我们分别实现前序、中序和后序遍历函数:
```cpp
void inorder(Node* root, vector<int>& res) {
if (root == nullptr) return;
inorder(root->left, res);
res.push_back(root->value);
inorder(root->right, res);
}
void preorder(Node* root, vector<int>& res) {
if (root == nullptr) return;
res.push_back(root->value);
preorder(root->left, res);
preorder(root->right, res);
}
void postorder(Node* root, vector<int>& res) {
if (root == nullptr) return;
postorder(root->left, res);
postorder(root->right, res);
res.push_back(root->value);
}
```
对于修改所有节点的值为其绝对值,可以添加一个新的辅助函数:
```cpp
void absoluteValues(Node* root) {
if (root != nullptr) {
root->value = abs(root->value);
absoluteValues(root->left);
absoluteValues(root->right);
}
}
```
最后,你可以创建一个二叉树并调用这些函数:
```cpp
int main() {
// 创建示例二叉树...
Node* root = createBinaryTree(); // 自定义函数,根据需求构建二叉树
vector<int> preOrderRes, inOrderRes, postOrderRes;
// 遍历并获取结果
preorder(root, preOrderRes);
inorder(root, inOrderRes);
postorder(root, postOrderRes);
// 修改所有节点值为绝对值
absoluteValues(root);
// 输出遍历结果
for (const auto& val : preOrderRes) {
cout << val << " ";
}
cout << endl;
for (const auto& val : inOrderRes) {
cout << val << " ";
}
cout << endl;
for (const auto& val : postOrderRes) {
cout << val << " ";
}
cout << endl;
return 0;
}
```
阅读全文