c++编写函数,实现打印二叉树中根节点到其所有叶节点的每一路径上所有节点的值
时间: 2024-11-07 10:13:32 浏览: 31
在 C++ 中,我们可以使用递归的方式来实现打印二叉树中从根节点到所有叶节点路径上所有节点的值。首先,我们需要定义一个二叉树节点结构,然后创建一个函数来遍历树并存储路径。这里是一个简单的示例:
```cpp
// 二叉树节点定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 定义辅助函数,用于记录路径并将路径添加到结果中
vector<vector<int>> path;
void addPath(TreeNode* node, vector<int>& currentPath) {
if (!node) return; // 如果节点为空,则结束路径
currentPath.push_back(node->val); // 将当前节点值加入路径
if (!node->left && !node->right) { // 判断是否到达叶节点
path.push_back(currentPath);
currentPath.pop_back(); // 回溯到前一个节点
} else {
// 递归处理左右子节点
addPath(node->left, currentPath);
addPath(node->right, currentPath);
}
}
// 主函数,输入根节点,打印所有路径
void printPaths(TreeNode* root) {
vector<int> startPath = {root->val}; // 初始化根节点的路径
addPath(root, startPath);
for (const auto& path : path) {
cout << "[";
for (int value : path) {
cout << value << ", ";
}
cout << "]" << endl; // 打印路径
}
}
```
这个代码会打印出从根节点到每个叶节点的所有路径,每个路径之间用方括号分隔,并且路径内节点值用逗号分隔。
阅读全文