二叉树:
class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right
144.二叉树的前序遍历
145.二叉树的后序遍历
94.二叉树的中序遍历
二叉树的递归遍历
1.确定递归函数的参数和返回值
2.确定终止条件
3.确定单层递归的逻辑
二叉树的迭代遍历
用迭代法来模拟递归:栈
- 前序(中左右):
栈:先放根节点,弹出根节点,先放入右孩子再放入左孩子 - 后序(左右中):
在前序的代码上修改:
前序(中左右)--> 中右左 --> (结果数组反转)后序(左右中) - 中序(左中右):
为什么中序不能直接在前序的代码上修改?(因为前序和后序访问节点和处理节点的顺序一样,而中序不一样)
栈:一路向左入栈,直到叶子节点,弹出栈顶,再把右孩子入栈,再一路向左