[LeetCode&Python] Problem 589. N-ary Tree Preorder Traversal

Posted chiyeung

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode&Python] Problem 589. N-ary Tree Preorder Traversal相关的知识,希望对你有一定的参考价值。

Given an n-ary tree, return the preorder traversal of its nodes‘ values.

 

For example, given a 3-ary tree:

技术分享图片

 

Return its preorder traversal as: [1,3,5,6,2,4].

 

Note: Recursive solution is trivial, could you do it iteratively?

 

Recursion Method:

"""
# Definition for a Node.
class Node(object):
    def __init__(self, val, children):
        self.val = val
        self.children = children
"""
class Solution(object):
    def preorder(self, root):
        """
        :type root: Node
        :rtype: List[int]
        """
        l=[]
        
        def subpreorderfun(r):
            if r:
                l.append(r.val)
                for c in r.children:
                    subpreorderfun(c)
        
        subpreorderfun(root)
        
        return l

  

Iteration Method:

"""
# Definition for a Node.
class Node(object):
    def __init__(self, val, children):
        self.val = val
        self.children = children
"""
class Solution(object):
    def preorder(self, root):
        """
        :type root: Node
        :rtype: List[int]
        """
        l=[]
        q=[root]
                
        if root:
            p=[]
            while q:
                a=q.pop(0)
                l.append(a.val)
                
                for c in a.children:
                    p.append(c)
                    
                n=len(p)
                for i in range(n):
                    q=[p.pop()]+q
                
        return l

  

以上是关于[LeetCode&Python] Problem 589. N-ary Tree Preorder Traversal的主要内容,如果未能解决你的问题,请参考以下文章

C++&Python描述 LeetCode C++&Python描述 LeetCode 剑指 Offer 22. 链表中倒数第k个节点

[LeetCode&Python] Problem 202. Happy Number

[LeetCode&Python] Problem 520. Detect Capital

[LeetCode&Python] Problem 383. Ransom Note

[LeetCode&Python] Problem 458. Poor Pigs

[LeetCode&Python] Problem 682. Baseball Game