/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution { //DFS search, 主函数中有两个递归函数
public:
vector<string> binaryTreePaths(TreeNode* root) {
vector<string> v; //全局vector<string>
if(root==NULL) return v;
string s; //一个字符串代表一个路径
//处理根节点
s=to_string(root->val);
if(root->left==NULL&&root->right==NULL){ //当前路径结尾
v.push_back(to_string(root->val));
return v;
}
helper(root->left,v,s); //处理根节点的左子树
helper(root->right,v,s); //处理根节点的右子树
return v;
}
void helper(TreeNode* root, vector<string>& v, string s){
if(root==NULL) return;
s=s+"->"+to_string(root->val);
if(root->left==NULL&&root->right==NULL){ //当前路径结尾
v.push_back(s);
return ; //回到上一级
}
helper(root->left,v,s);
helper(root->right,v,s); //处理完当前级的右孩子,相当于处理完上一级的左孩子,返回到上一级的右孩子入口
}
};
Leetcode 257. 二叉树的所有路径 - DFS递归
最新推荐文章于 2024-09-27 15:51:57 发布