c++二叉树前序遍历
时间: 2023-08-06 10:10:01 浏览: 120
二叉树的前序遍历(C++)
C++中二叉树的前序遍历可以通过递归或迭代的方式实现。下面给出两种方法的示例代码:
1. 递归方法:
```cpp
// 二叉树节点的定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 递归实现二叉树的前序遍历
void preorderTraversal(TreeNode* root) {
if (root == NULL) return;
cout << root->val << " "; // 访问当前节点
preorderTraversal(root->left); // 递归遍历左子树
preorderTraversal(root->right); // 递归遍历右子树
}
```
2. 迭代方法(使用栈):
```cpp
#include <stack>
// 迭代实现二叉树的前序遍历
void preorderTraversal(TreeNode* root) {
if (root == NULL) return;
stack<TreeNode*> st;
st.push(root);
while (!st.empty()) {
TreeNode* node = st.top();
st.pop();
cout << node->val << " "; // 访问当前节点
// 先将右子节点入栈,再将左子节点入栈,这样出栈时才能先访问左子节点
if (node->right) st.push(node->right);
if (node->left) st.push(node->left);
}
}
```
以上两种方法都可以实现二叉树的前序遍历,递归方法比较简洁,但对于大规模的树可能会导致函数调用栈溢出。迭代方法使用栈来模拟递归过程,可以处理大规模的树。根据实际需求选择合适的方法进行前序遍历。
阅读全文