[Leetcode]Binary Tree Inorder Traversal

来源:互联网 发布:ubuntu内核是什么 编辑:程序博客网 时间:2024/05/17 23:29

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

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

   1    \     2    /   3

return [1,3,2].

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

树的中序遍历~ 先来个递归解法~

class Solution:    # @param root, a tree node    # @return a list of integers    def inorderTraversal(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.helper(root.left)        self.res.append(root.val)        self.helper(root.right)
非递归解法如下~

class Solution:    # @param root, a tree node    # @return a list of integers    def inorderTraversal(self, root):        if root is None: return []        stack = []; res = []        while stack or root != None:            if root != None:                stack.append(root)                root = root.left            else:                root = stack.pop()                res.append(root.val)                root = root.right        return res

还有一种非递归解法,是用常数空间,叫Morris Traversal~可以参考一下这篇文章:http://www.cnblogs.com/AnnieKim/archive/2013/06/15/MorrisTraversal.html 

找时间再好好看看好了~


0 0
原创粉丝点击