LEETCODE 94. 二叉树的中序遍历

LEETCODE 94. 二叉树的中序遍历

题目描述

给定一个二叉树,返回它的中序 遍历。

示例:

输入: [1,null,2,3]
1
\
2
/
3

输出: [1,3,2]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?

题目地址
中文版
英文版

 

代码实现

递归版本

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
	def inorderTraversal(self, root):
		"""
		:type root: TreeNode
		:rtype: List[int]
		"""
		res = []
		def recursion(root):
			if(not root):
				return
			recursion(root.left)
			res.append(root.val)
			recursion(root.right)
		recursion(root)
		return res
                                                       

迭代版本

class Solution(object):
	def inorderTraversal(self, root):
		"""
		:type root: TreeNode
		:rtype: List[int]
		"""
		res = []
		stack = []
		while root or stack:
			if root:
				stack.append(root)
				root = root.left
			else:
				node = stack.pop()
				res.append(node.val)
				root = node.right
		return res
                                                             
0 次阅读

发表评论

电子邮件地址不会被公开。