Skip to content

Commit

Permalink
fix:typo
Browse files Browse the repository at this point in the history
  • Loading branch information
LiuL0703 authored Jul 5, 2021
1 parent aaaa289 commit 3646b36
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions 算法/201.精读《算法 - 二叉树》.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@ function visitTree(node: TreeNode) {

前序遍历第一个访问的一定是根节点,因此 `3` 一定是根节点,然后我们在中序遍历找到 `3`,这样 **左边就是所有左子树的中序遍历结果,右边就是所有右子树的中序遍历结果**,我们只要再找到 **左子树的前序遍历结果与右子树的前序遍历结果**,就可以递归了,终止条件是左或右子树只有一个值,那样就代表叶子节点。

那么怎么找左右子树的前序遍历呢?上面例子中,我们找到了 `3` 的左右子树的中序遍历结果,由于前序遍历优先访问左子树,因此我们数一下中序遍历中,`3` 左边的数量,只有一个 `9`,那么我们从前序遍历的 `3,9,20,15,7``3` 之后推一位,那么 `9` 就是左子树前序遍历结果,`9` 后面的 `20,15,7` 就是柚子树的前序遍历结果
那么怎么找左右子树的前序遍历呢?上面例子中,我们找到了 `3` 的左右子树的中序遍历结果,由于前序遍历优先访问左子树,因此我们数一下中序遍历中,`3` 左边的数量,只有一个 `9`,那么我们从前序遍历的 `3,9,20,15,7``3` 之后推一位,那么 `9` 就是左子树前序遍历结果,`9` 后面的 `20,15,7` 就是右子树的前序遍历结果

最后只要递归一下就能解题了,我们将输入不断拆解为左右子树的的输入,直到达到终止条件。

解决此题的关键是,不仅要直到如何写前中后序遍历,还要知道前序遍历第一个节点是根节点,后序遍历最后一个节点是根节点,中序遍历以根节点为中心,左右分别是其左右子树,这几个重要延伸特征。
解决此题的关键是,不仅要知道如何写前中后序遍历,还要知道前序遍历第一个节点是根节点,后序遍历最后一个节点是根节点,中序遍历以根节点为中心,左右分别是其左右子树,这几个重要延伸特征。

说完了反向,我们说正向,即递归一颗二叉树
说完了反向,我们说正向,即递归一棵二叉树

其实二叉树除了递归,还有一种常见的遍历方法是利用栈进行广度优先遍历,典型题目有从上到下打印二叉树。

Expand Down

0 comments on commit 3646b36

Please sign in to comment.