数据结构二叉树先序遍历
时间: 2023-11-12 07:07:29 浏览: 113
二叉树是一种常见的数据结构,它由节点和边组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的先序遍历是指先访问根节点,然后按照先左后右的顺序遍历左右子树。具体实现可以使用递归或者栈来实现。
以下是二叉树先序遍历的递归实现:
```
void preorderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
// 访问根节点
visit(root);
// 遍历左子树
preorderTraversal(root->left);
// 遍历右子树
preorderTraversal(root->right);
}
```
其中,`visit`函数表示访问节点的操作,可以根据具体需求进行定义。
以下是二叉树先序遍历的非递归实现:
```
void preorderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
stack<TreeNode*> s;
s.push(root);
while (!s.empty()) {
TreeNode* node = s.top();
s.pop();
// 访问节点
visit(node);
// 先将右子节点入栈
if (node->right != nullptr) {
s.push(node->right);
}
// 再将左子节点入栈
if (node->left != nullptr) {
s.push(node->left);
}
}
}
```
以上就是二叉树先序遍历的介绍和实现。如果您有其他问题,可以继续提出。
阅读全文