输出二叉树先序遍历序列
时间: 2024-06-21 08:03:13 浏览: 91
二叉树的先序遍历是指先遍历根节点,然后遍历左子树,最后遍历右子树的过程。具体来说,对于一个二叉树,它的先序遍历序列就是将根节点放在第一位,然后依次输出左子树的先序遍历序列和右子树的先序遍历序列。下面是一个例子:
1
/ \
2 3
/ \ \
4 5 6
这个二叉树的先序遍历序列是:1 2 4 5 3 6。
相关问题
c++输出二叉树先序遍历序列
假设二叉树的节点结构体为:
```cpp
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
```
则输出二叉树的先序遍历序列的代码如下:
```cpp
void preOrder(TreeNode* root) {
if (root == NULL) {
return;
}
cout << root->val << " ";
preOrder(root->left);
preOrder(root->right);
}
```
其中,先输出当前节点的值,然后递归输出左子树和右子树。
编写算法建立一棵二叉树的二叉链表; 2. 输出二叉树先序遍历序列; 3. 编写算法统计二叉树结点个数。
1. 二叉树的二叉链表结构如下:
```
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
```
建立二叉树的算法可以使用递归实现,如下所示:
```
TreeNode* buildTree(vector<int>& nums, int start, int end) {
if (start > end) return nullptr;
int mid = (start + end) / 2;
TreeNode* root = new TreeNode(nums[mid]);
root->left = buildTree(nums, start, mid - 1);
root->right = buildTree(nums, mid + 1, end);
return root;
}
TreeNode* buildBinaryTree(vector<int>& nums) {
return buildTree(nums, 0, nums.size() - 1);
}
```
2. 输出二叉树先序遍历序列的算法可以使用递归实现,如下所示:
```
void preorderTraversal(TreeNode* root, vector<int>& result) {
if (!root) return;
result.push_back(root->val);
preorderTraversal(root->left, result);
preorderTraversal(root->right, result);
}
vector<int> preorder(TreeNode* root) {
vector<int> result;
preorderTraversal(root, result);
return result;
}
```
3. 统计二叉树结点个数的算法可以使用递归实现,如下所示:
```
int countNodes(TreeNode* root) {
if (!root) return 0;
return 1 + countNodes(root->left) + countNodes(root->right);
}
```
阅读全文