二叉树创建,添加节点,递归遍历二叉树
时间: 2024-01-11 16:13:42 浏览: 76
二叉树的创建和添加节点可以通过递归实现。下面是一个示例代码:
```
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
void insert(TreeNode* &root, int val) {
if (root == nullptr) {
root = new TreeNode(val);
return;
}
if (val < root->val) {
insert(root->left, val);
} else {
insert(root->right, val);
}
}
void preOrderTraversal(TreeNode* root) {
if (root == nullptr) return;
cout << root->val << " ";
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
void inOrderTraversal(TreeNode* root) {
if (root == nullptr) return;
inOrderTraversal(root->left);
cout << root->val << " ";
inOrderTraversal(root->right);
}
void postOrderTraversal(TreeNode* root) {
if (root == nullptr) return;
postOrderTraversal(root->left);
postOrderTraversal(root->right);
cout << root->val << " ";
}
int main() {
TreeNode* root = nullptr;
int arr[] = {5, 3, 7, 2, 4, 6, 8};
int n = sizeof(arr) / sizeof(int);
for (int i = 0; i < n; i++) {
insert(root, arr[i]);
}
cout << "pre-order traversal: ";
preOrderTraversal(root);
cout << endl;
cout << "in-order traversal: ";
inOrderTraversal(root);
cout << endl;
cout << "post-order traversal: ";
postOrderTraversal(root);
cout << endl;
return 0;
}
```
在这个示例代码中,我们先定义了一个二叉树节点的结构体 `TreeNode`,包含一个整数值 `val`,以及左右子节点的指针 `left` 和 `right`。然后,我们实现了一个 `insert` 函数来向二叉树中插入节点,这个函数使用了递归的方式。最后,我们实现了三种遍历方式:前序、中序和后序遍历,也使用了递归的方式。
在 `main` 函数中,我们创建了一个空的二叉树,并向其中插入了一些节点。然后,我们分别用三种方式遍历这个二叉树,并输出遍历结果。
阅读全文