LeetCode257 二叉树的所有路径

前言

题目: 257. 二叉树的所有路径
文档: 代码随想录------二叉树的所有路径
编程语言: C++
解题状态: 没思路,简单题强度好高...

思路

本题利用了递归加回溯的思路。

这道题目要求从根节点到叶子的路径,所以需要前序遍历,这样才方便让父节点指向孩子节点,找到对应的路径。

因为我们要把路径记录下来,需要回溯来回退一个路径再进入另一个路径。

递归回溯是一家!

代码

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    void traversal(TreeNode* cur, vector<int>& path, vector<string>& result) {
        path.push_back(cur -> val);

        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();
        }
    }

    vector<string> binaryTreePaths(TreeNode* root) {
        vector<string> result;
        vector<int> path;
        if (root == NULL) return result;
        traversal(root, path, result);
        return result;
    }
};
相关推荐
Godspeed Zhao6 分钟前
从零开始学AI21——决策树
算法·决策树·机器学习
开开心心就好11 分钟前
网页图片批量下载工具,输入链接就保存
服务器·算法·leetcode·支持向量机·pdf·ocr·1024程序员节
圣保罗的大教堂25 分钟前
leetcode 462. 最小操作次数使数组元素相等 II 中等
leetcode
weixin1997010801629 分钟前
官方授权通道和灰色爬虫,做数据服务该选哪条路(附 python 源码)
c++·爬虫·python
wuminyu34 分钟前
JVM执行引擎学习总结:热点字节码编译成本地机器码
java·linux·c语言·jvm·c++
Tairitsu_H43 分钟前
[C++高阶数据结构·图论上] 最小生成树:为什么“选边”和“选点”是两条路?
数据结构·c++·图论·最小生成树
Navigator_Z1 小时前
LeetCode //C - 1313. Decompress Run-Length Encoded List
c语言·算法·leetcode
Bczheng11 小时前
VS2022 安装MFC和QT
c++·qt·mfc
dialect_2 小时前
CODEFORCES ROUND 1127 DIV2
开发语言·c++·算法
Nuanyt2 小时前
LeetCode Hot 100 链表专题(四)· 3 题(Java)
java·算法·leetcode·链表·双指针