在C++中获取非二叉树中特定节点的所有子节点,可以通过递归遍历树的方式实现。以下是一个示例代码:
#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的所有子节点进行打印。
请注意,以上代码仅为示例,实际应用中需要根据具体情况进行适当修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云