94. Binary Tree Inorder Traversal Leetcode Python

来源:互联网 发布:php curl get 数据 编辑:程序博客网 时间:2024/06/11 05:27

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?

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

这道题目主要考察inorder traverse, 题目很简单,但是也要考虑traverse 和iterative 的方法。其中iterative 的方法参考了http://jelices.blogspot.com/2014/06/leetcode-python-binary-tree-inorder.html

首先是traversal

# Definition for a  binary tree node# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    # @param root, a tree node    # @return a list of integers    def inorder(self,root,solution):        if root:            self.inorder(root.left,solution)            solution.append(root.val)            self.inorder(root.right,solution)    def inorderTraversal(self, root):        solution=[]        self.inorder(root,solution)        return solution        

iterative 的方法

# Definition for a  binary tree node# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    # @param root, a tree node    # @return a list of integers    def inorderTraversal(self, root):        stack=[]        solution=[]        node=root        while node or len(stack)>0:            if node!=None:                stack.append(node)                node=node.left            else:                node=stack.pop()                solution.append(node.val)                node=node.right        return solution                    





0 0
原创粉丝点击