力扣题目: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++-创新互联
标题链接:http://ybzwz.com/article/dsddsd.html