-
Given a binary tree, each node has value 0 or 1. Each root-to-leaf path represents a binary number starting with the most significant bit. For example, if the path is 0 -> 1 -> 1 -> 0 -> 1, then this could represent 01101 in binary, which is 13.
For all leaves in the tree, consider the numbers represented by the path from the root to that leaf.
Return the sum of these numbers.
푸는데 걸린 시간:30분
class Solution: total = [] def dfs(self, res, node): if node.val == -1: return res+=str(node.val) node.val = -1 if not node.left and not node.right: exp = 0 decimal = 0 for num in res[::-1]: decimal =+ decimal+int(num) * (2**exp) exp +=1 self.total.append(decimal) if node.left: self.dfs(res, node.left) if node.right: self.dfs(res, node.right) def sumRootToLeaf(self, root: TreeNode) -> int: self.total=[] self.dfs("", root) return(sum(self.total))
아,, 근데 뭔가 맘에 안든다..,, 뭔가,, 뭐랄까,, 맘에 안든다, 뭔가 더 코드를 정리할 수 있을 것 같은데
total =[] 선언도 필요없고 return값으로 바로 받고싶은데에..
아래처럼 변경하긴 했다. 근데 효율 결과 보니까 큰 차이는 없다 흠..
'2020년 > 코테' 카테고리의 다른 글
[코테 연습] Largest Perimeter Triangle (0) 2020.09.09 [코테 연습] Relative Sort Array (0) 2020.09.09 [코테 연습] Largest Time for Given Digits Python (0) 2020.09.02 [코테 연습] Delete Node in a BST Python (0) 2020.09.01 [코테 연습] Pancake Sorting (0) 2020.08.31