给定一个 N 叉树,返回其节点值的后序遍历。 1.递归 Recursion is easy to implement and understand by definition https://en.wikipedia.org/wiki/Tree_traversal#Post-order_(LRN).
def postorder(self, root): """ :type root: Node :rtype: List[int] """ res = [] if root == None: return res def recursion(root, res): for child in root.children: recursion(child, res) res.append(root.val) recursion(root, res) return res def postorder(self, root): """ :type root: Node :rtype: List[int] """ if not root: return [] self.res=[] self.recursion(root) return self.res def recursion(self,root): for child in root.children: self.recursion(child) self.res.append(root.val)2.循环: Iteration is basically pre-order traversal but rather than go left, go right first then reverse its result.
def postorder(self, root): res = [] if root == None: return res stack = [root] while stack: curr = stack.pop() res.append(curr.val) stack.extend(curr.children) return res[::-1]