输出二叉树中从每个叶子节点到根节点的路径
时间: 2023-04-22 12:00:54 浏览: 464
二叉树建立,输出,找叶子节点路径
5星 · 资源好评率100%
可以使用深度优先搜索(DFS)来输出二叉树中从每个叶子节点到根节点的路径。具体步骤如下:
1. 定义一个栈,用于存储当前遍历的节点以及它的路径。
2. 从根节点开始遍历二叉树,将根节点和空路径(即还没有任何节点)入栈。
3. 当栈不为空时,取出栈顶元素,如果该节点是叶子节点,则输出该节点到根节点的路径。
4. 如果该节点不是叶子节点,则将它的左右子节点和当前路径入栈,路径更新为当前路径加上该节点的值。
5. 重复步骤3和步骤4,直到栈为空。
输出的路径可以使用字符串来表示,每个节点之间用箭头“->”连接,例如:1->2->4。
代码实现如下:
```
class Solution {
public:
vector<string> binaryTreePaths(TreeNode* root) {
vector<string> res;
if (!root) return res;
stack<pair<TreeNode*, string>> s;
s.push({root, ""});
while (!s.empty()) {
auto [node, path] = s.top();
s.pop();
if (!node->left && !node->right) {
res.push_back(path + to_string(node->val));
} else {
if (node->left) s.push({node->left, path + to_string(node->val) + "->"});
if (node->right) s.push({node->right, path + to_string(node->val) + "->"});
}
}
return res;
}
};
```
阅读全文