LeetCode 257. Binary Tree Paths
題目
Given a binary tree, return all root-to-leaf paths.
For example, given the following binary tree:
1 / \ 2 3 \ 5All root-to-leaf paths are: ["1->2->5", "1->3"]
翻譯
給一個二元樹,回傳全部root到leaf的路徑,例如圖中的二元樹,
有兩條路徑["1->2->5", "1->3"]
思路
跟111. Minimum Depth of Binary Tree差不多,題目111中我們已經能找出每條path的深度, 這邊改成紀錄路徑,走訪毎一條路徑到達leaf的時候,就把路徑放到陣中。
解題
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {string[]}
*/
var binaryTreePaths = function(root) {
if(!root) return [];
// 使用list儲存每一條path
var list = [];
findPath(root,"");
return list;
// 走訪每一條path
function findPath(node,str){
// left, right 都是null,代表已經到了leaf,一條路徑完成
if(node.right == null && node.left == null){
list.push(str + node.val); // 走完一條路徑放到list
} else {
// 將目前節點的值加到str,並繼續走訪子節點
if(node.left != null) {
findPath(node.left,str + node.val + "->" );
}
if(node.right != null) {
findPath(node.right,str + node.val + "->" );
}
}
}
};