LeetCode94——二叉树的中序遍历(python)
Posted 归止于飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode94——二叉树的中序遍历(python)相关的知识,希望对你有一定的参考价值。
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
思路:递归,迭代。
在进行解题前,需要知道什么是中序遍历:
先递归地中序访问左子树,再访问根节点,最后访问右子树
方法一:
递归必备要素:终止条件,调用自身。创建一个函数,方便对于子树的嵌套循环。
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res = []
# 建立一个用于递归的函数
def dfs(root):
# 递归的终止条件
if root == None:
return
# 按照中序遍历的方法进行排序
dfs(root.left)
res.append(root.val)
dfs(root.right)
dfs(root)
return res
方法二:
利用栈来模拟递归的效果,当左节点无法继续时,就打印节点,转向右边,并重复这个过程。
class Solution:
def inorderTraversal(self, root):
s1 = []
s2 = []
while s2 or root:
if root:
s2.append(root)
root = root.left
else:
tmp = s2.pop()
s1.append(tmp.val)
root = tmp.right
return s1
以上是关于LeetCode94——二叉树的中序遍历(python)的主要内容,如果未能解决你的问题,请参考以下文章