题目描述
难度级别:简单
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明:
叶子节点是指没有子节点的节点。
示例:
输入:
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/
网友评论