首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将二叉树的节点插入链表(C++)

将二叉树的节点插入链表是一个常见的算法问题,可以通过遍历二叉树来实现。下面是一个C++的实现示例:

代码语言:txt
复制
#include <iostream>
#include <queue>

using namespace std;

// 二叉树节点的定义
struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

// 链表节点的定义
struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(NULL) {}
};

// 将二叉树的节点插入链表
ListNode* insertBinaryTreeToLinkedList(TreeNode* root) {
    if (root == NULL) {
        return NULL;
    }

    // 使用队列进行层次遍历
    queue<TreeNode*> q;
    q.push(root);

    ListNode* dummy = new ListNode(0);
    ListNode* curr = dummy;

    while (!q.empty()) {
        TreeNode* node = q.front();
        q.pop();

        // 创建新的链表节点
        ListNode* newNode = new ListNode(node->val);
        curr->next = newNode;
        curr = curr->next;

        // 将左右子节点加入队列
        if (node->left) {
            q.push(node->left);
        }
        if (node->right) {
            q.push(node->right);
        }
    }

    return dummy->next;
}

// 打印链表
void printLinkedList(ListNode* head) {
    ListNode* curr = head;
    while (curr != NULL) {
        cout << curr->val << " ";
        curr = curr->next;
    }
    cout << endl;
}

int main() {
    // 构造二叉树
    TreeNode* root = new TreeNode(1);
    root->left = new TreeNode(2);
    root->right = new TreeNode(3);
    root->left->left = new TreeNode(4);
    root->left->right = new TreeNode(5);

    // 将二叉树的节点插入链表
    ListNode* head = insertBinaryTreeToLinkedList(root);

    // 打印链表
    printLinkedList(head);

    return 0;
}

这段代码实现了将二叉树的节点插入链表的功能。首先定义了二叉树节点和链表节点的结构体,然后使用队列进行层次遍历二叉树,将每个节点的值插入链表中。最后打印链表的值。

这个问题的应用场景可以是在二叉树的遍历过程中,将节点的值按照某种顺序保存在链表中,方便后续的处理。

腾讯云相关产品和产品介绍链接地址:

以上是腾讯云提供的一些相关产品,可以根据具体需求选择适合的产品来支持云计算和开发工作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

二叉树问题(四)-LeetCode 502、543、637、606、114、979(最大堆,IPO)

假设 力扣(LeetCode)即将开始其 IPO。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 力扣 设计完成最多 k 个不同项目后得到最大总资本的方式。 给定若干个项目。对于每个项目 i,它都有一个纯利润 Pi,并且需要最小的资本 Ci 来启动相应的项目。最初,你有 W 资本。当你完成一个项目时,你将获得纯利润,且利润将被添加到你的总资本中。 总而言之,从给定项目中选择最多 k 个不同项目的列表,以最大化最终资本,并输出最终可获得的最多资本。

02
领券