zoukankan      html  css  js  c++  java
  • leetcode94 Binary Tree Inorder Traversal

     1 """
     2 Given a binary tree, return the inorder traversal of its nodes' values.
     3 Example:
     4 Input: [1,null,2,3]
     5    1
     6     
     7      2
     8     /
     9    3
    10 Output: [1,3,2]
    11 """
    12 """
    13 中序遍历题
    14 解法一递归
    15 """
    16 class TreeNode:
    17     def __init__(self, x):
    18         self.val = x
    19         self.left = None
    20         self.right = None
    21 
    22 class Solution1:
    23     def inorderTraversal(self, root):
    24         if root == None:
    25             return []
    26         else:
    27             List = []
    28             self.order(root, List)  #bug,刚开始没有把List传进去
    29         return List
    30     def order(self, root, List):
    31         if root.left:
    32             self.order(root.left, List)
    33         List.append(root.val)
    34         if root.right:
    35             self.order(root.right, List)
    36 """
    37 解法二:非递归
    38 栈 思路:
    39 (1)树先一直向左走到叶节点并将沿途的结点入栈 ;
    40 (2)然后向右走一步,重复第一步操作。
    41 注意要将沿途的节点进行入栈
    42 """
    43 class TreeNode:
    44     def __init__(self, x):
    45         self.val = x
    46         self.left = None
    47         self.right = None
    48 class Solution2(object):
    49     def inorderTraversal(self, root):
    50         """
    51         :type root: TreeNode
    52         :rtype: List[int]
    53         """
    54         if root == None:
    55             return []
    56         List = []
    57         stack = []
    58         while root or stack:
    59             if root:
    60                 stack.append(root)
    61                 root = root.left
    62             else:
    63                 root = stack.pop(-1)
    64                 List.append(root.val)
    65                 root = root.right
    66         return List
    67 if __name__ == '__main__':
    68     S = Solution2()
    69     l1 = TreeNode(1)
    70     l2 = TreeNode(2)
    71     l3 = TreeNode(3)
    72     l4 = TreeNode(4)
    73     l5 = TreeNode(5)
    74     l6 = TreeNode(6)
    75     l7 = TreeNode(7)
    76     root = l1
    77     l1.left = l2
    78     l1.right = l3
    79     l2.left = l4
    80     l2.right = l5
    81     l3.left = l6
    82     l3.right = l7
    83     print(S.inorderTraversal(root))
  • 相关阅读:
    日报 18/06/21
    collection
    日报 18/06/20
    getTickCount()函数 VS GetTickCount()函数
    临时变量不能作为非const类型引用形参的实参
    关于Char类型数据做cout输出
    静态局部变量、静态全局变量、extern全局变量、自动变量 札记
    cvKMeans2函数用法概述
    操作系统 庞丽萍 第五章
    操作系统 庞丽萍 第四章
  • 原文地址:https://www.cnblogs.com/yawenw/p/12305579.html
Copyright © 2011-2022 走看看