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
   \
    5  
All 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 + "->" );
            } 
        }    
    }
};

results matching ""

    No results matching ""