[Leetcode]Binary Tree Preorder Traversal

来源:互联网 发布:网络教育统考好不好考 编辑:程序博客网 时间:2024/06/05 09:32

Given a binary tree, return the preorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

   1    \     2    /   3

return [1,2,3].

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

树的前序遍历~递归解法如下~

class Solution:    # @param root, a tree node    # @return a list of integers    def preorderTraversal(self, root):        if root is None: return []        self.res = []        self.helper(root)        return self.res            def helper(self, root):        if root is None: return        self.res.append(root.val)        self.helper(root.left)        self.helper(root.right)
非递归解法如下~也是用stack来实现~

class Solution:    # @param root, a tree node    # @return a list of integers    def preorderTraversal(self, root):        if root is None: return []        stack = []; res = []        while stack or root != None:            if root != None:                res.append(root.val)                stack.append(root)                root = root.left            else:                root = stack.pop()                root = root.right        return res
同Binary Tree Inorder Traversal一样,还有一个非递归解法:Morris Traversal~以后找时间再看吧~


0 0