#include <iostream>
#include <vector>
using namespace std;
//双链表节点结构
typedef struct treeNode {
int value;
struct treeNode* left;
struct treeNode* right;
treeNode(int x) : value(x), left(nullptr), right(nullptr) {}
} TreeNode;
TreeNode* mergeTrees(TreeNode* head1, TreeNode* head2)
{
if (head1 == nullptr)
{
return head2;
}
if (head2 == nullptr)
{
return head1;
}
TreeNode* merged = new TreeNode(head1->value + head2->value);
merged->left = mergeTrees(head1->left, head2->left);
merged->right = mergeTrees(head1->right, head2->right);
return merged;
}
void inOrderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
inOrderTraversal(root->left);
std::cout << root->value << " ";
inOrderTraversal(root->right);
}
int main()
{
// 构建二叉搜索树
TreeNode* root = new TreeNode(4);
root->left = new TreeNode(2);
root->right = new TreeNode(5);
root->left->left = new TreeNode(1);
root->left->right = new TreeNode(3);
// 4
// 2 5
// 1 3
TreeNode* root1 = new TreeNode(1);
root1->left = new TreeNode(3);
root1->right = new TreeNode(2);
root1->left->left = new TreeNode(5);
// 1
// 3 2
//5
TreeNode* head = mergeTrees(root, root1);
inOrderTraversal(head);
system("pause");
return 0;
}
https://blog.csdn.net/weixin_45295612/article/details/125027357