参考 顺序表实现的代码,实现基于顺序存储结构的二叉树可视化show函数,并依次在主程序中调用前序遍历、中序遍历和后序遍历,从而展示出各个操作功能
时间: 2024-12-10 13:40:37 浏览: 7
【BP回归预测】蜣螂算法优化BP神经网络DBO-BP光伏数据预测(多输入单输出)【Matlab仿真 5175期】.zip
在基于顺序存储的二叉树中,我们通常会使用数组来模拟节点链表。这里是一个简单的示例,展示了如何实现二叉树节点以及`show`函数,用于前序、中序和后序遍历:
```cpp
// 定义二叉树节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 帮助函数,递归遍历并打印节点值
void printInOrder(TreeNode* root) {
if (root == nullptr) return;
printInOrder(root->left);
cout << root->val << " ";
printInOrder(root->right);
}
void printPreOrder(TreeNode* root) {
if (root == nullptr) return;
cout << root->val << " ";
printPreOrder(root->left);
printPreOrder(root->right);
}
void printPostOrder(TreeNode* root) {
if (root == nullptr) return;
printPostOrder(root->left);
printPostOrder(root->right);
cout << root->val << " ";
}
// 显示二叉树(假设数组arr表示根节点位置)
void showTree(int arr[], int size) {
TreeNode* root = arr[0] ? new TreeNode(arr[0]) : nullptr;
for (int i = 1; i < size; i++) {
if (arr[i]) {
root->left = arr[i * 2 + 1] ? new TreeNode(arr[i * 2 + 1]) : nullptr;
root->right = arr[i * 2 + 2] ? new TreeNode(arr[i * 2 + 2]) : nullptr;
}
}
// 调用遍历函数
cout << "前序遍历结果: ";
printPreOrder(root);
cout << endl;
cout << "中序遍历结果: ";
printInOrder(root);
cout << endl;
cout << "后序遍历结果: ";
printPostOrder(root);
cout << endl;
// 释放内存
delete root;
}
```
在这个例子中,`arr`是一个整数数组,每个元素代表一个节点的值,非零元素对应有左孩子和右孩子的节点。`showTree`函数首先根据数组创建二叉树,然后分别调用前序、中序和后序遍历函数来显示节点的访问顺序。
阅读全文