【leetcode】988. Smallest String Starting From Leaf
阿新 • • 發佈:2019-02-06
start urn img tar tro tps nod leet ==
題目如下:
Given the
root
of a binary tree, each node has a value from0
to25
representing the letters‘a‘
to‘z‘
: a value of0
represents‘a‘
, a value of1
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:
- The number of nodes in the given tree will be between
1
and1000
.- Each node in the tree will have a value between
0
and25
.
解題思路:把樹遍歷一下就好了,依次記錄從根節點開始每一層的節點的值,到達葉子節點後比較得到最小值。
代碼如下:
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None classSolution(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