首页 > 其他分享 >257. 二叉树的所有路径

257. 二叉树的所有路径

时间:2023-04-06 18:55:37浏览次数:37  
标签:node right cur res 路径 二叉树 push path 257

给定一个二叉树,返回所有从根节点到叶子节点的路径。

说明: 叶子节点是指没有子节点的节点。

class Solution {
private:
    void traversal(TreeNode* cur, string path, vector<string>& res)
    {
        path += std::to_string(cur->val);
        if(cur->left==nullptr && cur->right==nullptr)
        {
            res.push_back(path);
            return;
        }
        if(cur->left) traversal(cur->left,path+"->",res);
        if(cur->right) traversal(cur->right,path+"->",res);
    }
public:
    //这道题所使用的回溯,即进入子节点 退出之后不改变在该节点path的值
    vector<string> binaryTreePaths(TreeNode* root) {
        vector<string> res;
        string path;
        if(root == nullptr) return res;
        traversal(root,path,res);
        return res;
    }
    vector<string> binaryTreePaths1(TreeNode* root) {
        vector<string> res;
        stack<TreeNode*> sta1;
        stack<string> sta2;
        if(root == nullptr) return res;
        sta1.push(root);
        sta2.push(std::to_string(root->val));
        while(!sta1.empty())
        {
            TreeNode *node = sta1.top(); sta1.pop();
            string path = sta2.top(); sta2.pop();
            if(node->left == nullptr&&node->right == nullptr)
            {
                res.push_back(path);
            }
            if(node->right) {
                sta1.push(node->right);
                sta2.push(path + "->" + std::to_string(node->right->val));
            }
            if(node->left) {
                sta1.push(node->left);
                sta2.push(path + "->" + std::to_string(node->left->val));
            }
        }
        return res;
};

标签:node,right,cur,res,路径,二叉树,push,path,257
From: https://www.cnblogs.com/lihaoxiang/p/17293795.html

相关文章

  • 树:剑指 Offer 68 - II. 二叉树的最近公共祖先
    题目描述:给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个结点p、q,最近公共祖先表示为一个结点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root= ......
  • C#获取当前程序运行路径的几种方法
    从外部程序启动另一个程序,路径有点不一样;logger.InfoFormat($"{System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName},{System.Environment.CurrentDirectory},{System.IO.Directory.GetCurrentDirectory()}"+$",{System.AppDomain......
  • java中如何创建带路径的文件
    请教各位大侠了,java中如何创建带路径的文件,说明下这个路径不存在------回答---------------其他回答(2分)---------JavacodeFilef=newFile("c:/1.txt");if(!f.exists()){try{f.createNewFile();}catch(IOExceptione){e.printStackTrace();}}------其他回答(18分)----......
  • Vulnhub之Monkeybox详细测试过程(不同的Shell获取路径)
    Monkeybox识别目标主机IP地址─(kali㉿kali)-[~/Desktop/Vulnhub/Monkeybox]└─$sudonetdiscover-ieth1-r192.168.56.0/24Currentlyscanning:Finished!|ScreenView:UniqueHosts......
  • ThinkPHP 3.2 路径问题
    一、阿帕奇域名已经开始访问的时候:(去掉index.php)访问路径:http://wechatu.xd107.com/Pay/Index/payToJS路径代码:var$URL="__ROOT__/Pay/Index/";二、阿帕奇域名没开启:(没有掉index.php)访问路径:http://soft.amaitech.com/index.php?s=/Home/Login/index.htmlJS路径代码......
  • 树:剑指 Offer 55 - II. 平衡二叉树
    题目描述:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例1:  示例2:  限制:0<=树的结点个数<=10000 方法基于以下性质推出: 此树的深度 等于 左子树的深度 与 ......
  • [LeetCode] 1339. Maximum Product of Splitted Binary Tree 分裂二叉树的最大乘积
    Giventhe root ofabinarytree,splitthebinarytreeintotwosubtreesbyremovingoneedgesuchthattheproductofthesumsofthesubtreesismaximized.Return themaximumproductofthesumsofthetwosubtrees.Sincetheanswermaybetoolarge,re......
  • 基于PSO的最优路径优化仿真,带GUI界面,可以设置粒子数目,迭代次数,优化目标,输出最优
    1.算法描述PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空......
  • 基于PSO的最优路径优化仿真,带GUI界面,可以设置粒子数目,迭代次数,优化目标,输出最优
    1.算法描述        PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前......
  • 二叉树
         #include<bits/stdc++.h>usingnamespacestd;typedefstructTreeNode{ chardata; structTreeNode*LChild; structTreeNode*RChild;}Tree,LPTree;LPTree*creatNode(chardata);voidinsertNode(LPTree*parentNode,LPTree*LChild,LPTree......