先序遍历创建二叉链表存储的二叉树及遍历操作
时间: 2023-10-06 16:06:11 浏览: 276
先序遍历创建二叉链表存储的二叉树的过程为:
1. 读入一个节点的值,若该节点的值为特定的结束符,则返回 NULL,否则新建一个节点,并将该节点的值设置为读入的值。
2. 递归创建该节点的左子树,将左子树的根节点设置为该节点的左孩子。
3. 递归创建该节点的右子树,将右子树的根节点设置为该节点的右孩子。
4. 返回该节点的指针。
先序遍历的操作为:
1. 访问当前节点。
2. 递归遍历当前节点的左子树。
3. 递归遍历当前节点的右子树。
以下是示例代码:
```c++
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* createTree() {
int val;
cin >> val;
if (val == -1) {
return NULL;
}
TreeNode* root = new TreeNode(val);
root->left = createTree();
root->right = createTree();
return root;
}
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
cout << root->val << " ";
preorderTraversal(root->left);
preorderTraversal(root->right);
}
int main() {
TreeNode* root = createTree();
preorderTraversal(root);
return 0;
}
```
假设输入的二叉树为:
```
1
2
-1
-1
3
4
-1
-1
5
-1
-1
```
则输出结果为:
```
1 2 3 4 5
```
阅读全文