二叉树的先序遍历要求遇到空结点时输出字符“#”,利用c++语言如何实现
时间: 2024-12-23 07:20:18 浏览: 1
在C++中,我们可以使用递归的方式来实现二叉树的先序遍历,并在访问到空节点时打印出"#"。这里是一个简单的示例:
```cpp
#include <iostream>
using namespace std;
// 定义二叉树节点结构体
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 先序遍历函数,打印节点值和空节点的"#"符号
void preorderTraversal(TreeNode* root) {
if (root == nullptr) { // 空节点
cout << "#";
} else {
cout << root->val; // 非空节点,打印节点值
preorderTraversal(root->left); // 递归左子树
preorderTraversal(root->right); // 递归右子树
}
}
int main() {
// 创建一个简单的二叉树
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);
// 调用先序遍历并打印结果
preorderTraversal(root);
return 0;
}
```
在这个例子中,`preorderTraversal` 函数会首先检查当前节点是否为空,如果为空则输出"#"; 否则,它会先打印当前节点的值,然后递归地遍历左子树和右子树。
阅读全文