力扣日刷48
102.二叉树的层序遍历:
我们需要一层又一层地去遍历二叉树,具体来说,我们cur数组去装当前的值,我们用nxt数组去装载下一层的值,当cur全部为空的时候退出装载。下面就是具体的代码:有一点困惑的地方就是该怎么生成nxt。其他的我觉得没什么问题。
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: if root is None: return [] ans = [] cur = [root] while cur: nxt = [] vals = [] for node in cur: vals.append(node.val) if node.left: nxt.append(node.left) if node.right: nxt.append(node.right) cur = nxt ans.append(vals) return ans103.二叉树的锯齿形排序方法:
代码与上一题相似,只是需要设置一个反转判断的变量以及一个反转的判断
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: if root is None: return [] ans = [] cur = [root] even = False while cur: nxt = [] vals = [] for node in cur: vals.append(node.val) if node.left: nxt.append(node.left) if node.right: nxt.append(node.right) cur = nxt ans.append(vals[::-1] if even else vals) even = not even return ans513.找到树左下角的值
其实也用层序排列可以做,只需要去选择出来那个值就可以了
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def findBottomLeftValue(self, root: Optional[TreeNode]) -> int: ans =[] cur = [root] while cur: vals = [] nxt = [] for node in cur: vals.append(node.val) if node.left: nxt.append(node.left) if node.right: nxt.append(node.right) cur = nxt ans.append(vals) return ans[-1][0]17.电话号码的字母组合
这里对递过去归回来的思路有了一定的了解。
1.当前要做什么?分为什么时候我把结果输出(边界条件),
2.子问题是什么?我不输出的时候需要干什么?(非边界条件)
3.下一个子问题是什么? (递归过程)
这里的边界条件就是当字母的数字
Map = ['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz'] class Solution: def letterCombinations(self, digits: str) -> List[str]: n = len(digits) if n == 0: return [] path = [''] * n ans = [] def dfs(i): if i == n: return ans.append(''.join(path)) for c in Map[int(digits[i])]: path[i] = c dfs(i+1) dfs(0) return ans