给定一个二叉树的根节点 root
,返回它的 中序 遍历。
示例 1:
输入:root = [1,null,2,3] 输出:[1,3,2]
示例 2:
输入:root = [] 输出:[]
示例 3:
输入:root = [1] 输出:[1]
示例 4:
输入:root = [1,2] 输出:[2,1]
示例 5:
输入:root = [1,null,2] 输出:[1,2]
提示:
- 树中节点数目在范围
[0, 100]
内 -100 <= Node.val <= 100
1.递归解法
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
self.res = []
self.dfs(root)
return self.res
def dfs(self,node:TreeNode):
if node is None:
return
self.dfs(node.left)
self.res.append(node.val)
self.dfs(node.right)
2.非递归解法-栈
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
"""
左中右
"""
res = []
if root ==None:
return res
stack = []
#之所以要赋值,是因为要转移遍历的顺序
curr = root
while (curr !=None or len(stack)>0):
if curr != None:
stack.append(curr)
curr = curr.left
else:
curr = stack.pop()
res.append(curr.val)
curr = curr.right
return res