//
// Created by Mr.Hu on 2018/12/11.
//
// leetcode 257 binary tree paths
//
// 题目要求对于给定的二叉树,返回所有的路径(根节点到叶子节点)
//
// 这个题目的思路和之前112、113关于path sum差不多,都是去遍历树的所有路径。这里还需要保存每条路径,得到相应的string数组。
// 首先,还是可以将这个问题理解为DFS(深度优先搜索)、先序遍历的问题。使用非递归的方法,将访问的节点压栈,并且将
// 形如”->x”的字符串加入到path上,直到栈顶元素为叶子节点,则将当前的path记录到路径数组中。
// 然后将栈顶元素出栈,使用字符串取子串的方法,将后面2+top.size()个字符进行删除,这就保证了当前节点离开此时的路径时,路径的结果表示也去除了该部分。
// 由于我们回溯到上一个节点时,并没法判断其左儿子和右儿子是否已经访问过,为了避免重复访问,我们使用一个set(集合)来保存访问过的节点。
//
// 另外使用了递归的方法,在递归的过程中,不涉及节点是否之前被访问过,但是在递归函数中,每次需要传递当前访问的节点,和目前已有路径
//
1 |
|