题目原址
https://leetcode.com/submissions/detail/156034370/
题目描述
Given a binary tree, return all root-to-leaf paths.
Note: A leaf is a node with no children.
Example:
Input:
1
/ \
2 3
\
5
Output: ["1->2->5", "1->3"]
Explanation: All root-to-leaf paths are: 1->2->5, 1->3
解题思路
给定一个二叉树,找出二叉树从根节点到叶子节点的所有路径。
该题可以使用很多方法实现,这里我使用的是stack栈的方式实现。
AC代码
class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> ret = new ArrayList<>(); //用来存储返回值
Stack<TreeNode> stack1 = new Stack<>(); //用来存储二叉树的各个结点
Stack<String> stack2 = new Stack<>();//用来存储各个节点的值与"->"
if(root == null)
return ret;
stack1.push(root);
stack2.push("");
while(!stack1.isEmpty()) {
TreeNode cur = stack1.pop();
String curS = stack2.pop();
if(cur.left == null && cur.right == null)
ret.add(curS + cur.val);
if(cur.left != null) {
stack1.push(cur.left);
stack2.push(curS + cur.val + "->");
}
if(cur.right != null) {
stack1.push(cur.right);
stack2.push(curS + cur.val + "->");
}
}
return ret;
}
}
参考
https://leetcode.com/problems/binary-tree-paths/discuss/68278/My-Java-solution-in-DFS-BFS-recursion