二叉树之求所有路径

题目:

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

复制代码
输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]

示例 2:

复制代码
输入:root = [1]
输出:["1"]

思路直接看代码吧

先说说收获:递归可以看出3部分,

结束条件

递归函数

执行动作

三个内容中,一般结束条件放在最前面,递归函数和执行动作会根据位置不同而影响结果

在这道题目中更进一步的了解了回溯,相当于这个不行了就往回然后再往另外一条路走,

可以说在二叉树中的每一个递归都是这样的,而且是左边走完才走右边

这里还有一个比较关键的点就是pop,要放在递归函数后面,因为要搞一条路,这条路走不通了往回走,那么当前的val就要pop掉

函数:to_string将数转换为字符串类型

看代码:

复制代码
class Solution {
private:

    void traversal(TreeNode* cur, vector<int>& path, vector<string>& result) {
        path.push_back(cur->val); // 中,中为什么写在这里,因为最后一个节点也要加入到path中 
        // 这才到了叶子节点
        if (cur->left == NULL && cur->right == NULL) {
            string sPath;
            for (int i = 0; i < path.size() - 1; i++) {
                sPath += to_string(path[i]);
                sPath += "->";
            }
            sPath += to_string(path[path.size() - 1]);
            result.push_back(sPath);
            return;
        }
        if (cur->left) { // 左 
            traversal(cur->left, path, result);
            path.pop_back(); // 回溯
        }
        if (cur->right) { // 右
            traversal(cur->right, path, result);
            path.pop_back(); // 回溯
        }
    }

public:
    vector<string> binaryTreePaths(TreeNode* root) {
        vector<string> result;
        vector<int> path;
        if (root == NULL) return result;
        traversal(root, path, result);
        return result;
    }
};
相关推荐
豆浩宇8 小时前
Conda环境隔离和PyCharm配置,完美同时运行PaddlePaddle和PyTorch
人工智能·pytorch·算法·计算机视觉·pycharm·conda·paddlepaddle
一只鱼^_8 小时前
牛客周赛 Round 108
数据结构·c++·算法·动态规划·图论·广度优先·推荐算法
小刘的AI小站9 小时前
leetcode hot100 二叉搜索树
算法·leetcode
自信的小螺丝钉9 小时前
Leetcode 876. 链表的中间结点 快慢指针
算法·leetcode·链表·指针
红豆怪怪9 小时前
[LeetCode 热题 100] 32. 最长有效括号
数据结构·python·算法·leetcode·动态规划·代理模式
愚润求学10 小时前
【贪心算法】day6
c++·算法·leetcode·贪心算法
AI 嗯啦10 小时前
计算机的排序方法
数据结构·算法·排序算法
l12345sy10 小时前
Day23_【机器学习—聚类算法—K-Means聚类 及评估指标SSE、SC、CH】
算法·机器学习·kmeans·聚类·sse·sc·ch
_Coin_-10 小时前
算法训练营DAY58 第十一章:图论part08
数据结构·算法·图论
scx2013100411 小时前
P13929 [蓝桥杯 2022 省 Java B] 山 题解
c++·算法·蓝桥杯·洛谷