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;
    }
};
相关推荐
march_birds9 分钟前
FreeRTOS与RT-Thread内存分配对比分析
算法
lwewan10 分钟前
26考研——栈、队列和数组_队列(3)
数据结构·笔记·考研
Reese_Cool18 分钟前
【有外界干扰的BFS】经典题P2895Meteor Shower S
数据结构·c++·算法·蓝桥杯·宽度优先
DeepLink40 分钟前
生成器版本的杨辉三角
算法
BC橡木40 分钟前
C++迭代器(iterator)
c++
刚入门的大一新生1 小时前
排序算法2-选择排序
算法·排序算法
日暮南城故里1 小时前
排序算法------练习1
java·算法·排序算法
刚入门的大一新生1 小时前
排序算法1--插入排序
算法·排序算法
源码宝1 小时前
【PACS源码】PACS数字医学影像信息系统,影像数据管理、图像处理、海量数据存储与检索
c++·影像系统·pacs·pacs源码·数据储存·影像后处理·影像工作站
程序员yt1 小时前
双非一本毕业测试工作一年想转C++开发,嵌入式Linux与音视频方向哪个方向更合适?
linux·c++·音视频