二叉树的所有路径 题目描述 说明: 解题思路

题目描述

难度级别:简单

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

说明:

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

示例:

输入:

   1
 /   \
2     3
 \
  5

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

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

解题思路

广度优先搜索

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

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章