概念:
遍历命名
根据访问结点操作发生位置命名:
① NLR: 前序遍历(Preorder Traversal 亦称(先序遍历))
——访问根结点的操作发生在遍历其左右子树之前。
② LNR: 中序遍历(Inorder Traversal)
——访问根结点的操作发生在遍历其左右子树之中(间)。
③ LRN: 后序遍历(Postorder Traversal)
——访问根结点的操作发生在遍历其左右子树之后。
共同特点:三种遍历方式中,叶子节点的顺序均为从左往右的相同的顺序。
举例:
温馨提示:可以根据代码理解遍历顺序,然后对着这张图片自己走一遍。
遍历算法:
1.前序遍历
先(根、前)序遍历的 递归算法定义:
若二叉树非空,则依次执行如下操作:
(1)访问根结点;
(2)遍历左子树;
(3)遍历右子树。
前序遍历python代码:
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
def forward(root1):
if not root1:
return
ans.append(root1.val)
forward(root1.left)
forward(root1.right)
ans = []
forward(root)
return ans
2.中序遍历
中(根)序遍历的递归算法定义:
若二叉树非空,则依次执行如下操作:
(1)遍历左子树;
(2)访问根结点;
(3)遍历右子树。
中序遍历python代码:
class Solution:
def inorderTraversal(self,<