257. 二叉树的所有路径

本文介绍了一种用于寻找二叉树中所有从根节点到叶子节点路径的深度优先搜索(DFS)算法。通过递归方式,算法构建并收集所有路径字符串,最终返回所有可能的路径集合。示例代码使用Java实现,展示了如何处理二叉树节点,并构建路径字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 257. 二叉树的所有路径
 * @author wsq
 * @date 2020-09-04
 * 给定一个二叉树,返回所有从根节点到叶子节点的路径。
	说明: 叶子节点是指没有子节点的节点。
	示例:

	输入:
	   1
	 /   \
	2     3
	 \
	  5
	
	输出: ["1->2->5", "1->3"]

	解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
	链接:https://leetcode-cn.com/problems/binary-tree-paths
 */
package notsubmit;

import java.util.LinkedList;
import java.util.List;

class TreeNode{
	int val;
	TreeNode left;
	TreeNode right;
	TreeNode(int val){
		this.val = val;
	}
}


public class BinaryTreePaths {
	List<String> ans = new LinkedList<String>();
    public List<String> binaryTreePaths(TreeNode root) {
    	dfs(root, "");
    	return ans;
    }
    
    public void dfs(TreeNode node, String pre_str) {
    	if(node == null) {
    		return;
    	}
    	
    	if(pre_str == "") {
    		pre_str += node.val;
    	}else {    		
    		pre_str = pre_str + "->" + node.val;
    	}
    	
    	if(node.left == null && node.right == null) {
    		ans.add(pre_str);
    		return;
    	}else {
    		dfs(node.left, pre_str);
    		dfs(node.right, pre_str);
    	}
    }
	public static void main(String[] args) {
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值