以下是使用C语言实现二叉树合并的代码:

#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
};
// 创建节点函数
struct TreeNode* createNode(int val) {
    struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
    node->val = val;
    node->left = NULL;
    node->right = NULL;
    return node;
}
// 二叉树合并函数
struct TreeNode* mergeTrees(struct TreeNode* t1, struct TreeNode* t2) {
    if (t1 == NULL) {
        return t2;
    }
    if (t2 == NULL) {
        return t1;
    }
    // 将t2的值合并到t1中
    t1->val += t2->val;
    // 递归合并左右子树
    t1->left = mergeTrees(t1->left, t2->left);
    t1->right = mergeTrees(t1->right, t2->right);
    return t1;
}
// 中序遍历函数
void inorderTraversal(struct TreeNode* root) {
    if (root == NULL) {
        return;
    }
    inorderTraversal(root->left);
    printf('%d ', root->val);
    inorderTraversal(root->right);
}
int main() {
    // 创建两个二叉树
    struct TreeNode* t1 = createNode(1);
    t1->left = createNode(3);
    t1->right = createNode(2);
    t1->left->left = createNode(5);
    struct TreeNode* t2 = createNode(2);
    t2->left = createNode(1);
    t2->right = createNode(3);
    t2->left->right = createNode(4);
    t2->right->right = createNode(7);
    // 合并两个二叉树
    struct TreeNode* merge = mergeTrees(t1, t2);
    // 输出合并后的二叉树中序遍历结果
    printf("Merge Tree Inorder Traversal: ");
    inorderTraversal(merge);
    printf("\n");
    return 0;
}

该代码实现了二叉树的合并操作,并使用中序遍历函数输出合并后的结果。代码中注释详细,方便理解。

代码说明:

  1. struct TreeNode: 定义二叉树节点结构,包含节点的值 (val)、左子节点指针 (left) 和右子节点指针 (right)。
  2. createNode(int val): 创建一个新的二叉树节点,并初始化其值。
  3. mergeTrees(struct TreeNode* t1, struct TreeNode* t2): 合并两个二叉树,将 t2 中的值合并到 t1 中,并递归合并左右子树。
  4. inorderTraversal(struct TreeNode* root): 使用中序遍历方式输出二叉树的节点值。
  5. main(): 创建两个示例二叉树,调用 mergeTrees() 合并它们,并使用 inorderTraversal() 输出合并后的结果。

代码运行结果:

Merge Tree Inorder Traversal: 5 3 6 2 9 7 

总结:

本文提供了一个完整的C语言实现二叉树合并算法的示例,并包含中序遍历函数,方便用户理解和应用。希望本文能够帮助您更好地理解二叉树数据结构和相关算法。

C语言实现二叉树合并算法 - 完整代码和示例

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

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