257. 二叉树的所有路径
题目
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
示例 1:
输入:root = [1,2,3,null,5]
输出:[“1->2->5”,“1->3”]
示例 2:
输入:root = [1]
输出:[“1”]
提示:
树中节点的数目在范围 [1, 100] 内
-100 <= Node.val <= 100
思路
这个题目对于我来说,使用常规的而是二叉树的遍历思路就可以了。
但是需要总结的是列表的使用方式,在java中怎么操作列表,这些虽然是基础,但是你不知道的话,算法可能就是一个思路,顶多写一个伪代码处理,真正落地的代码还是有困难的。
代码
在这里插入代码片
class Solution {
//采用非LinkedList存储遍历的路径和最终结果
LinkedList<String> path = new LinkedList<>();
LinkedList<String> res = new LinkedList<>();
public List<String> binaryTreePaths(TreeNode root) {
//采用递归函数解决
//明确递归函数要解决的代码逻辑
traverse(root);
return res;
}
void traverse(TreeNode root){
if(root == null){
return;
}
if(root.left == null && root.right == null){
path.addLast(root.val+"");
res.addLast(String.join("->",path));
path.removeLast();
return;
}
//前序的位置是添加
path.addLast(root.val+"");
traverse(root.left);
traverse(root.right);
//后续的位置是删除
path.removeLast();
}
}
LinkedList的常用方法
添加元素:add地哦啊链表末尾
在指定位置插入元素:add(index,e)
将元素添加到链表头部:addFirst()
将元素添加到链表尾部:addLast()
删除斌返回头部元素:remove()
删除指定索引的元素
删除并返回链表头部的的元素
删除并并返回链表尾部的元素
返回指定位置的元素:get()
返回链表头部的元素
返回链表尾部的元素
替换指定位置的元素:set(index,e);
返回指定元素出现的第一次索引:indexOf
返回指定元素最后一出现的缩影:
判断脸小中是否包含指定元素:contains();
size()
isEmpty()