利用C语言帮我写代码1.从键盘输入扩展二叉树的先序遍历序列,构建另一棵二叉树; 2.交换二叉树中所有度为2的结点的左右子树,输出交换后的二叉树中序遍历序列; 3.统计二叉树中左右子树高度相等的结点数。(注意:叶子节点也算高度相等)
时间: 2023-10-31 10:06:38 浏览: 167
1. 下面是使用C语言编写的代码:
```
#include<stdio.h>
#include<stdlib.h>
// 定义二叉树结点
struct TreeNode {
char val;
struct TreeNode* left;
struct TreeNode* right;
};
// 构建二叉树
struct TreeNode* buildTree() {
char ch;
scanf("%c", &ch);
if (ch == '#') {
return NULL;
}
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = ch;
root->left = buildTree();
root->right = buildTree();
return root;
}
// 交换二叉树中所有度为2的结点的左右子树
void swapTree(struct TreeNode* root) {
if (root == NULL) {
return;
}
if (root->left != NULL && root->right != NULL) {
struct TreeNode* temp = root->left;
root->left = root->right;
root->right = temp;
}
swapTree(root->left);
swapTree(root->right);
}
// 统计二叉树中左右子树高度相等的结点数
int countEqualHeightNodes(struct TreeNode* root) {
if (root
阅读全文