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

如何在C++中获取非二叉树中特定节点的所有子节点

在C++中获取非二叉树中特定节点的所有子节点,可以通过递归遍历树的方式实现。以下是一个示例代码:

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

// 定义树节点结构
struct TreeNode {
    int val;
    std::vector<TreeNode*> children;
    TreeNode(int x) : val(x) {}
};

// 递归遍历获取特定节点的所有子节点
void getAllChildren(TreeNode* node, std::vector<TreeNode*>& result) {
    if (node == nullptr) {
        return;
    }
    
    for (TreeNode* child : node->children) {
        result.push_back(child);
        getAllChildren(child, result);
    }
}

int main() {
    // 构建一个非二叉树
    TreeNode* root = new TreeNode(1);
    TreeNode* node2 = new TreeNode(2);
    TreeNode* node3 = new TreeNode(3);
    TreeNode* node4 = new TreeNode(4);
    TreeNode* node5 = new TreeNode(5);
    TreeNode* node6 = new TreeNode(6);
    TreeNode* node7 = new TreeNode(7);
    
    root->children.push_back(node2);
    root->children.push_back(node3);
    root->children.push_back(node4);
    node2->children.push_back(node5);
    node2->children.push_back(node6);
    node4->children.push_back(node7);
    
    // 获取节点1的所有子节点
    std::vector<TreeNode*> result;
    getAllChildren(root, result);
    
    // 打印结果
    std::cout << "节点1的所有子节点为:";
    for (TreeNode* node : result) {
        std::cout << node->val << " ";
    }
    std::cout << std::endl;
    
    // 释放内存
    delete root;
    delete node2;
    delete node3;
    delete node4;
    delete node5;
    delete node6;
    delete node7;
    
    return 0;
}

上述代码中,我们定义了一个树节点结构TreeNode,其中包含一个值val和一个子节点数组children。通过递归函数getAllChildren,我们可以获取特定节点的所有子节点,并将结果存储在一个std::vector<TreeNode*>中。在main函数中,我们构建了一个非二叉树,并获取节点1的所有子节点进行打印。

请注意,以上代码仅为示例,实际应用中需要根据具体情况进行适当修改和扩展。

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

相关·内容

领券