当前位置: 首页 > 后端技术 > Python

力扣-0144.二叉树的前序遍历【Python】

时间:2023-03-26 16:52:44 Python

ProblemLeetCode给定二叉树的根,返回其节点值的前序遍历。示例1:输入:root=[1,null,2,3]输出:[1,2,3]示例2:输入:root=[]输出:[]例3:输入:root=[1]输出:[1]例4:输入:root=[1,2]输出:[1,2]例5:输入:root=[1,null,2]输出:[1,2]约束:树中的节点数在[0,100].-100<=Node.val<=100范围内跟进:递归求解很简单,你能不能迭代地做它?问题是给你二叉树的根节点root,返回其节点值的前序遍历。示例1:输入:root=[1,null,2,3]输出:[1,2,3]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]例4:输入:root=[1,2]输出:[1,2]例5:输入:root=[1,null,2]输出:[1,2]提示:节点数树在[0,100]-100<=Node.val<=100范围内高级:递归算法很简单,你能通过迭代算法来实现吗?思路是在递归根的左右两边加上根节点的值,然后遍历左右子树Python3代码#二叉树节点的定义#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclass解决方案:defpreorderTraversal(self,root:TreeNode)->List[int]:#递归res=[]defdfs(root):ifnotroot:return[]res.append(root.val)dfs(root.left)dfs(root.right)dfs(root)returnres返回使用栈来模拟Python3代码#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclass解决方案:defpreorderTraversal(self,root:TreeNode)->List[int]:#代res=[]ifnotroot:returnresstack=[]node=rootwhilestackornode:whilenode:res.append(node.val)stack.append(node)#前序遍历node=node.leftnode=stack.pop()node=node.right返回resGitHub链接Python