用C语言编写复制一颗二叉树的算法
时间: 2024-12-17 11:28:16 浏览: 9
C语言非递归后序遍历二叉树
5星 · 资源好评率100%
在C语言中,复制一棵二叉树通常会采用递归的方式。首先,我们需要定义结构体表示二叉树节点,然后创建两个辅助函数,一个是复制节点,另一个是整个二叉树的复制过程。这里是一个基本的步骤说明:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 辅助函数:复制单个节点
TreeNode* copyNode(TreeNode* node) {
if (node == NULL) return NULL;
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->val = node->val;
newNode->left = copyNode(node->left);
newNode->right = copyNode(node->right);
return newNode;
}
// 主函数:复制整棵二叉树
TreeNode* copyBinaryTree(TreeNode* root) {
return copyNode(root);
}
int main() {
// 创建示例二叉树并进行复制
// ... (这部分代码你需要根据实际的二叉树结构填写)
return 0;
}
```
在这个例子中,`copyBinaryTree`函数负责遍历原二叉树,并递归地对每个节点进行复制。如果遇到空节点,则返回NULL,否则创建新节点,复制值并链接新的左右子树。
阅读全文