二叉树的链式存储结构,实现二叉树的建立,先序遍历,后序遍历,中序遍历,统计叶子个数的操作
时间: 2023-12-01 22:02:35 浏览: 128
二叉树的链式存储结构是通过指针实现的,在定义二叉树节点时,除了存储节点的数据域之外,还需要定义两个指针分别指向该节点的左子树和右子树。
以下是二叉树的链式存储结构的 C++ 实现:
```
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x): val(x), left(nullptr), right(nullptr) {}
};
```
接下来,我们实现二叉树的建立、先序遍历、后序遍历、中序遍历和统计叶子个数的操作。
建立二叉树:
```
TreeNode* buildTree() {
int val;
cin >> val;
if (val == -1) { // -1表示空节点
return nullptr;
}
TreeNode* root = new TreeNode(val);
root->left = buildTree();
root->right = buildTree();
return root;
}
```
先序遍历:
```
void preOrder(TreeNode* root) {
if (!root) {
return;
}
cout << root->val << ' ';
preOrder(root->left);
preOrder(root->right);
}
```
后序遍历:
```
void postOrder(TreeNode* root) {
if (!root) {
return;
}
postOrder(root->left);
postOrder(root->right);
cout << root->val << ' ';
}
```
中序遍历:
```
void inOrder(TreeNode* root) {
if (!root) {
return;
}
inOrder(root->left);
cout << root->val << ' ';
inOrder(root->right);
}
```
统计叶子个数:
```
int countLeaves(TreeNode* root) {
if (!root) {
return 0;
}
if (!root->left && !root->right) {
return 1;
}
return countLeaves(root->left) + countLeaves(root->right);
}
```
以上就是二叉树的链式存储结构及相关操作的实现。
阅读全文
相关推荐











