目录
一、题目
给定一个二叉树,返回它的中序遍历。
二、示例
示例:
输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2]
三、思路
1、递归。后序遍历:左-->根-->右。
2、非递归,栈的思想,先进后出。
四、代码
1、
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def inorderTraversal(self, root: TreeNode):
if root is None:
return []
return self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right)
if __name__ == '__main__':
root = TreeNode(1)
root.left = None
root.right = TreeNode(2)
root.right.left = TreeNode(3)
s = Solution()
ans = s.inorderTraversal(root)
print(ans)
2、
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def inorderTraversal(self, root: TreeNode):
res = []
if root is None:
return res
stack = []
while stack or root:
if root is not None:
stack.append(root)
root = root.left
else:
root = stack.pop()
res.append(root.val)
root = root.right
return res
if __name__ == '__main__':
root = TreeNode(1)
root.left = None
root.right = TreeNode(2)
root.right.left = TreeNode(3)
s = Solution()
ans = s.inorderTraversal(root)
print(ans)