leetcode94 Binary Tree Inorder Traversal

Posted yawenw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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))

 

以上是关于leetcode94 Binary Tree Inorder Traversal的主要内容,如果未能解决你的问题,请参考以下文章

[leetcode-94-Binary Tree Inorder Traversal]

[LeetCode]94.Binary Tree Inorder Traversal

leetcode 94. Binary Tree Inorder Traversal

LeetCode94 Binary Tree Inorder Traversal

LeetCode 94. Binary Tree Inorder Traversal

LeetCode 94: Binary Tree Inorder Traversal