题目描述
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
题目分析
即从根节点返回到每一个叶子节点的路径,很容易可以想到解题思路:
- 遍历树
- 到叶子节点记录返回
代码实现
public List<String> binaryTreePaths(TreeNode root) {
List<String> result = new ArrayList<>();
path(result,"",root);
return result;
}
public void path(List<String> result,String item, TreeNode root){
if(root==null){
return;
}
if (!"".equals(item)){
item+="->"+root.val;
}
else{
item += String.valueOf(root.val);
}
path(result, item, root.left);
path(result, item, root.right);
//到叶子节点则返回
if (root.left==null&&root.right==null) {
result.add(item);
}
}
小结
- 遍历方式,按深度遍历,方便记录路线。
- 判断叶子节点,左右子树都为空