6-11 先序输出叶结点pta
时间: 2023-05-29 20:03:46 浏览: 130
本题需要使用二叉树的先序遍历算法,判断每个节点是否为叶子节点,如果是叶子节点则输出其值。
具体步骤如下:
1. 定义二叉树结构体和创建二叉树的函数。
```c++
#include <iostream>
using namespace std;
struct TreeNode {
char val;
TreeNode* left;
TreeNode* right;
TreeNode(char x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* createTree() {
char val;
cin >> val;
if (val == '#') {
return NULL;
}
TreeNode* root = new TreeNode(val);
root->left = createTree();
root->right = createTree();
return root;
}
```
2. 定义先序遍历函数和判断叶子节点的函数。
```c++
void preOrder(TreeNode* root) {
if (root == NULL) {
return;
}
cout << root->val << " ";
preOrder(root->left);
preOrder(root->right);
}
bool isLeaf(TreeNode* root) {
if (root == NULL) {
return false;
}
if (root->left == NULL && root->right == NULL) {
return true;
}
return false;
}
```
3. 在先序遍历的过程中,判断当前节点是否为叶子节点,如果是则输出其值。
```c++
void preOrderLeaf(TreeNode* root) {
if (root == NULL) {
return;
}
if (isLeaf(root)) {
cout << root->val << " ";
}
preOrderLeaf(root->left);
preOrderLeaf(root->right);
}
```
4. 最后在主函数中调用创建二叉树和先序遍历叶子节点的函数。
```c++
int main() {
TreeNode* root = createTree();
preOrderLeaf(root);
return 0;
}
```
完整代码如下:
阅读全文