257. 二叉树的所有路径
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-paths/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目分析
前序遍历
- 递归
前序遍历
class Solution {
public:
vector<string> res;
vector<int> path;
void traversal(TreeNode* cur){
path.push_back(cur->val);//中左右
//到叶子结点:cur不为空,左右孩子为空 终止条件
if(cur != nullptr && cur->left == nullptr && cur->right == nullptr){
//处理path 为string
string s;
for(int i = 0; i < path.size() - 1; i++){
s += to_string(path[i]);
s += "->";//必须双引号
}
s += to_string(path[path.size() - 1]);
res.push_back(s);
return ;
}
if(cur->left != nullptr){
traversal(cur->left);
path.pop_back();//回溯和递归是一一对应的,有一个递归,就要有一个回溯
}
if(cur->right != nullptr){
traversal(cur->right);
path.pop_back();//回溯和递归是一一对应的,有一个递归,就要有一个回溯
}
}
vector<string> binaryTreePaths(TreeNode* root) {
res.clear();
path.clear();
if(root == nullptr) return res;
traversal(root);
return res;
}
};
- 迭代法
较难理解