#include <stdio.h> #include <stdlib.h>

struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; };

struct TreeNode* mergeTrees(struct TreeNode* t1, struct TreeNode* t2) { if (t1 == NULL) { return t2; } if (t2 == NULL) { return t1; } t1->val += t2->val; t1->left = mergeTrees(t1->left, t2->left); t1->right = mergeTrees(t1->right, t2->right); return t1; }

int main() { // 创建两个二叉树 struct TreeNode* t1 = (struct TreeNode*)malloc(sizeof(struct TreeNode)); t1->val = 1; t1->left = (struct TreeNode*)malloc(sizeof(struct TreeNode)); t1->left->val = 3; t1->left->left = (struct TreeNode*)malloc(sizeof(struct TreeNode)); t1->left->left->val = 5; t1->left->left->left = NULL; t1->left->left->right = NULL; t1->left->right = NULL; t1->right = (struct TreeNode*)malloc(sizeof(struct TreeNode)); t1->right->val = 2; t1->right->left = NULL; t1->right->right = NULL;

struct TreeNode* t2 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
t2->val = 2;
t2->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
t2->left->val = 1;
t2->left->left = NULL;
t2->left->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
t2->left->right->val = 4;
t2->left->right->left = NULL;
t2->left->right->right = NULL;
t2->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
t2->right->val = 3;
t2->right->left = NULL;
t2->right->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
t2->right->right->val = 7;
t2->right->right->left = NULL;
t2->right->right->right = NULL;

// 合并两个二叉树
struct TreeNode* result = mergeTrees(t1, t2);

// 输出合并后的二叉树
printf('%d\n', result->val);
printf('%d %d\n', result->left->val, result->right->val);
printf('%d %d %d %d\n', result->left->left->val, result->left->right->val, result->right->left->val, result->right->right->val);

return 0;

}

C语言实现二叉树合并算法

原文地址: https://www.cveoy.top/t/topic/jzpm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录