力扣题目:257.二叉树的所有路径,递归做法,c++-创新互联
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
成都创新互联专注于吴中网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供吴中营销型网站建设,吴中网站制作、吴中网页设计、吴中网站官网定制、微信小程序服务,打造吴中网络公司原创品牌,更为您提供吴中网站排名全网营销落地服务。叶子节点 是指没有子节点的节点。
示例 1:
输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]
示例 2:
输入:root = [1]
输出:["1"]
提示:
树中节点的数目在范围 [1, 100] 内
-100<= Node.val<= 100
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/binary-tree-paths
思路:递归传入一个string变量来记录路径(注意不能是引用变量,因为会随着返回而改变),还有一个flag引用变量来记录头结点方便判断string是否要加“->”,递归结束条件:一个节点是叶子节点是停止并将此事的string存入vector中,当走完全部叶子节点后的vector即为所求。
class Solution {
public:
void findstring(TreeNode *root,vector&v,string s,int &flag)
{
if(flag==0)
{
s+=to_string(root->val);flag=1;//记录收个节点的数值后将flag的值变为1
}
else
s+="->"+to_string(root->val);
if(!root->left&&!root->right)
{
v.push_back(s);return;
}
if(root->left)//有左节点才进入,因递归结束条件为叶子节点,空节点不做判断
findstring(root->left,v,s,flag);
if(root->right)//有右节点才进入,因递归结束条件为叶子节点,空节点不做判断
findstring(root->right,v,s,flag);
}
vectorbinaryTreePaths(TreeNode* root) {
vectorv;
if(!root)
return v;
string s="";
int flag=0;
findstring(root,v,s,flag);
return v;
}
};
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
名称栏目:力扣题目:257.二叉树的所有路径,递归做法,c++-创新互联
网页URL:http://hbruida.cn/article/dsddsd.html