迭代法-深度优先搜索
class Solution: def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]: if not root: return [] # 如果根节点为空,直接返回空列表 stack = [(root, str(root.val))] # 初始化栈,栈中存储的是节点和对应的路径 res = [] # 用于存储所有路径 while stack: cur, path = stack.pop() # 弹出栈顶节点及其对应的路径 if not cur.left and not cur.right: # 如果当前节点是叶子节点 res.append(path) # 将当前路径添加到结果列表中 if cur.right: # 如果右子节点存在,则将右子节点及路径入栈 stack.append((cur.right, path + "->" + str(cur.right.val))) if cur.left: # 如果左子节点存在,则将左子节点及路径入栈 stack.append((cur.left, path + "->" + str(cur.left.val))) return res # 返回所有路径列表
标签:right,cur,路径,leedcode,stack,二叉树,path,节点 From: https://www.cnblogs.com/yyyjw/p/18091537