先序遍历二叉树cpp思路
时间: 2024-11-28 15:12:40 浏览: 20
先序遍历是一种访问二叉树节点的常见算法,它的顺序是根节点 -> 左子树 -> 右子树。在C++中,你可以使用递归的方式来实现这个过程。以下是基本的思路:
```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) { // 如果当前节点非空
cout << root->val << " "; // 访问根节点
preorderTraversal(root->left); // 递归左子树
preorderTraversal(root->right); // 递归右子树
}
}
```
在这个函数中,我们首先检查当前节点是否为空,如果不为空,则打印节点值,然后分别对左子树和右子树进行同样的操作。如果整个树都是空的,那么函数会自然结束。
相关问题
先序遍历二叉树
好的,我以一棵二叉树为例进行先序遍历的演示。假设这棵二叉树的结构如下:
```
1
/ \
2 3
/ \
4 5
```
那么按照先序遍历的顺序,遍历这棵二叉树的结果应该是:
```
1 2 4 5 3
```
下面是使用C++语言实现先序遍历的代码:
```cpp
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void preOrder(TreeNode* root) {
if (root == nullptr) return;
cout << root->val << ' ';
preOrder(root->left);
preOrder(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);
preOrder(root);
return 0;
}
```
输出结果为:`1 2 4 5 3`。
easyX输入先序遍历二叉树
以下是使用递归方法输入先序遍历二叉树的代码:
```cpp
#include <graphics.h>
// 二叉树节点结构体
struct TreeNode {
int value;
TreeNode* left;
TreeNode* right;
};
// 递归方法输入先序遍历二叉树
TreeNode* inputTree() {
int value;
scanf("%d", &value);
if (value == -1) { // 输入 -1 表示空节点
return nullptr;
}
TreeNode* root = new TreeNode{value, nullptr, nullptr};
root->left = inputTree();
root->right = inputTree();
return root;
}
int main() {
initgraph(640, 480);
setbkcolor(WHITE);
// 输入二叉树
TreeNode* root = inputTree();
// 其他操作
getch();
closegraph();
return 0;
}
```
注意,这里只是输入二叉树的方法,需要根据实际需求进行其他操作。
阅读全文