已知一颗树的节点间关系,请编程实现该树的先根遍历。
时间: 2024-03-09 15:49:03 浏览: 65
先根遍历也叫做前序遍历,是一种树的遍历方式,遍历顺序为:根节点、左子树、右子树。可以通过递归的方式实现。
假设树的节点类定义如下:
```
class TreeNode {
public:
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
```
先根遍历的实现代码如下:
```
void preorderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
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);
// 先根遍历
cout << "先根遍历的结果为:";
preorderTraversal(root);
return 0;
}
```
输出结果为:
```
先根遍历的结果为:1 2 4 5 3
```
阅读全文