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

LeetCode - 0589. N叉树的前序遍历【Python】

时间:2023-03-26 19:01:22 Python

力扣|0589.Nary-Tree输入序列化表示在它们的级别顺序遍历中,每组子级由空值分隔(参见示例)。Followup:递归求解是微不足道的,你能迭代吗?示例1:输入:root=[1,null,3,2,4,null,5,6]输出:[1,3,5,6,2,4]示例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]输出:[1,2,3,6,7,11,14,4,8,12,5,9,13,10]约束条件:n叉树的高度小于等于1000的节点总数为between[0,10^4]问题给定一棵N叉树,返回其节点顺序遍历的前一个值。例如,给定一棵3路树:返回其前序遍历:[1,3,5,6,2,4]。说明:递归的方法很简单,你能用迭代的方法来完成这道题吗?想法DFSPython3代码"""#DefinitionforaNode.classNode:def__init__(self,val=None,children=None):self.val=valself.children=children"""class解决方案:defpreorder(self,root:'Node')->List[int]:#DFSres=[]defdfs(root):如果不是root:returnres.append(root.val)forchildinroot.children:dfs(child)dfs(root)returnresBFS在遍历子树时选择倒序加入,因为尾元素弹出。Python3代码"""#Node.class节点的定义:def__init__(self,val=None,children=None):self.val=valself.children=children"""class解决方案:defpreorder(self,root:'Node')->List[int]:#BFSifnotroot:return[]q=[root]res=[]whileq:#在列表末尾弹出一个元素node=q.pop()res.append(node.val)#倒序添加,从右到左forchildinnode.children[::-1]:q.append(child)returnresGitHublinkPython