1. 程式人生 > >【leetcode】988. Smallest String Starting From Leaf

【leetcode】988. Smallest String Starting From Leaf

start urn img tar tro tps nod leet ==

題目如下:

Given the root of a binary tree, each node has a value from 0 to 25representing the letters ‘a‘ to ‘z‘: a value of 0 represents ‘a‘, a value of 1 represents ‘b‘, and so on.

Find the lexicographically smallest string that starts at a leaf of this tree and ends at the root.

(As a reminder, any shorter prefix of a string is lexicographically smaller: for example, "ab"

is lexicographically smaller than "aba". A leaf of a node is a node that has no children.)

Example 1:

技術分享圖片

Input: [0,1,2,3,4,3,4]
Output: "dba"

Example 2:

技術分享圖片

Input: [25,1,3,1,3,0,2]
Output: "adz"

Example 3:

技術分享圖片

Input: [2,2,1,null,1,0,null,0]
Output: "abc"

Note:

  1. The number of nodes in the given tree will be between 1
    and 1000.
  2. Each node in the tree will have a value between 0 and 25.

解題思路:把樹遍歷一下就好了,依次記錄從根節點開始每一層的節點的值,到達葉子節點後比較得到最小值。

代碼如下:

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class
Solution(object): res = z*1001 def recursive(self,node,path): path += chr(node.val + ord(a)) if node.left == None and node.right == None: self.res = min(self.res,path[::-1]) if node.left != None: self.recursive(node.left,path) if node.right != None: self.recursive(node.right, path) def smallestFromLeaf(self, root): """ :type root: TreeNode :rtype: str """ if root != None: self.recursive(root,‘‘) return self.res

【leetcode】988. Smallest String Starting From Leaf