二叉树的所有路径

2023-09-24 15:19:53 浏览数 (1)

题目描述

难度级别:简单

给定一个二叉树,返回所有从根节点到叶子节点的路径。

说明:

叶子节点是指没有子节点的节点。

示例:

代码语言:javascript复制
输入:

   1
 /   
2     3
 
  5

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

解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3

解题思路

广度优先搜索

创建非子节点队列queue,与非子节点路径队列path。当队列queue中存在值时,依次将queue,path与出列,若当前元素无左右节点,则说明为子节点,则直接向输出队列中添加路径值,若不是,则将存在的节点添加至队列尾部,路径也拼接至路径队列尾部。

代码语言:javascript复制
const binaryTreePaths = function(root) {
    if (!root) return []

    const res_path = []
    const queue = [root]
    const path = [root.val.toString()]

    while(queue.length) {
        const current_node = queue.shift()
        const current_path = path.shift()

        if (!current_node.left && !current_node.right) {
            res_path.push(current_path)
        }else{
            if (current_node.left) {
                queue.push(current_node.left)
                path.push(current_path "->" current_node.left.val.toString())
            }
            if (current_node.right) {
                queue.push(current_node.right)
                path.push(current_path "->" current_node.right.val.toString())
            }
        }
    }

    return res_path
};

题目来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-anagram/

0人点赞

算法

0 人点赞