• 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))
  • 相关阅读:
    冲刺第二阶段第五天
    找水王2
    冲刺第二阶段第四天
    梦断代码阅读笔记03
    冲刺第二阶段第三天
    冲刺第二阶段第二天
    冲刺第二阶段第一天
    梦断代码阅读笔记02
    第十二周学习进度条
    找水王
  • 原文地址:https://www.cnblogs.com/yawenw/p/12305579.html
Copyright © 2020-2023  润新知