Leetcode 94. Binary Tree Inorder Traversal(python)

二叉树的中序遍历

迭代实现,用栈:

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def inorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        res,stack=[],[]
        while root or stack:
            if root:
                stack.append(root)
                root=root.left
            else:
                node = stack.pop()
                res.append(node.val)
                root = node.right
        return res

递归实现:

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def inorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        res=[]
        self.inorder_recursive(root,res)
        return res
    
    def inorder_recursive(self,root,res):
        if root:
            self.inorder_recursive(root.left,res)
            res.append(root.val)
            self.inorder_recursive(root.right,res)

  

posted @ 2016-04-02 21:04  colors  阅读(798)  评论(0编辑  收藏  举报