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

力扣-0590.N叉树的顺序遍历【Python】

时间:2023-03-25 23:41:23 Python

ProblemLeetCode给定一棵n叉树,返回其节点值的后序遍历。由空值分隔(参见示例)。跟进:递归解决方案很简单,您可以迭代解决吗?示例1:输入:root=[1,null,3,2,4,null,5,6]输出:[5,6,3,2,4,1]示例2:输入:root=[1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:[2,6,14,11,7,3,12,8,4,13,9,10,5,1]约束条件:n叉树的高度小于等于1000节点总数在[0,10^4]之间问题力扣给定一个N叉树,返回其节点值的后序遍历。例如,给定一棵3叉树:返回其后序遍历:[5,6,3,2,4,1]。说明:递归的方法很简单,你能用迭代的方法来完成这道题吗?IdeaDFSPython3code"""#DefinitionforaNode.classNode:def__init__(self,val=None,children=None):self.val=valself.children=children"""class解决方案:defpostorder(self,root:'Node')->List[int]:#DFSres=[]defdfs(root):如果不是root:returnforchildinroot.children:dfs(child)res.append(root.val)dfs(root)returnresBFS遍历子树时,相加的顺序类似于rootrightleft,所以最后一步是倒序。Python3代码"""#Node.class节点的定义:def__init__(self,val=None,children=None):self.val=valself.children=children"""class解决方案:defpostorder(self,root:'Node')->List[int]:#BFSifnotroot:return[]q=[root]res=[]whileq:#在列表末尾弹出一个元素node=q.pop()res.append(node.val)#按顺序添加forchildinnode.children:q.append(child)returnres[::-1]GitHublinkPython