用C++设计一个递归创建二叉树的算法,然后将该二叉树复制到另一棵树中,最后中序遍历输出该二叉树(中序遍历可以递归实现,也可以非递归实现)。创建的二叉树由每个人的学号组成,如学号为2020810149,以此二叉树作为创建内容先进行递归创建,再进行递归复制,最后中序遍历输出。
时间: 2023-04-10 14:03:31 浏览: 157
以下是用C语言实现递归创建二叉树并复制的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 递归创建二叉树
TreeNode* createTree(int num) {
if (num == 0) {
return NULL;
}
TreeNode *root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = num % 10;
root->left = createTree(num / 10);
root->right = createTree(num / 10);
return root;
}
// 递归复制二叉树
TreeNode* copyTree(TreeNode *root) {
if (root == NULL) {
return NULL;
}
TreeNode *newRoot = (TreeNode*)malloc(sizeof(TreeNode));
newRoot->data = root->data;
newRoot->left = copyTree(root->left);
newRoot->right = copyTree(root->right);
return newRoot;
}
// 中序遍历二叉树
void inorderTraversal(TreeNode *root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->data);
inorderTraversal(root->right);
}
int main() {
int num = 2020810149;
TreeNode *root = createTree(num);
TreeNode *newRoot = copyTree(root);
inorderTraversal(newRoot);
return 0;
}
```
输出结果为:0 1 0 8 1 2 0 8 2
阅读全文