Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0d74ba9

Browse files
zhangzz2015gitbook-bot
authored andcommitted
GitBook: [greyireland#9] No subject
1 parent 8ae386d commit 0d74ba9

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

‎SUMMARY.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
* [栈和队列](data\_structure/stack\_queue.md)
1313
* [链表](data\_structure/linked\_list.md)
14-
* [二叉树](data\_structure/binary\_tree.md)
14+
* [二叉树和递归](data\_structure/binary\_tree.md)
1515
* [二进制](data\_structure/binary\_op.md)
1616

1717
## 基础算法篇

‎data_structure/binary_tree.md‎

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1-
# 二叉树
1+
# 二叉树和递归
22

33
## 知识点
44

55
### 二叉树遍历
66

77
**前序遍历**:**先访问根节点**,再前序遍历左子树,再前序遍历右子树 **中序遍历**:先中序遍历左子树,**再访问根节点**,再中序遍历右子树 **后序遍历**:先后序遍历左子树,再后序遍历右子树,**再访问根节点**
88

9-
注意点
9+
注意点和关键点
1010

11-
* 以根访问顺序决定是什么遍历
12-
* 左子树都是优先右子树
11+
* 遍历有dfs 和 bfs,dfs有递归和非递归,非递归可使用双色法+栈,bfs使用queue。
12+
* dfs以根的访问顺序决定什么遍历,具体使用哪种要分析递归问题。 
13+
* 在分析递归问题时,需要考虑问题,包括需要从parent传入什么信息,需要从孩子收集什么信息。当需要parent信息,需要前序,需要孩子信息,则为后序,递归的退出条件也就是base情况,另外需要返回什么信息。
14+
* 后序遍历的应用和分治的用法是相似,例如merge sort。前序遍历的应用quick sort。
15+
* 更困难的题目有的时候需要混合前序和后序。
16+
* 中序遍历对于BST是很重要的性质,因此在BST下,要理解中序遍历对于BST就是一个有序的遍历。
1317

1418
#### 前序递归
1519

@@ -479,7 +483,7 @@ void dfs(TreeNode* root, int level, int& ret)
479483

480484
> 给定一个二叉树,判断它是否是高度平衡的二叉树。
481485
482-
思路:分治法,后序遍历,左边平衡 && 右边平衡 && 左右两边高度 <= 1, 因为需要返回是否平衡及高度。如果某种情况是不平衡,可直接返回false。考虑三种情况,左边不平衡,右边不平衡,或者左右高度差大于1,都直接返回false,当返回true时,同时计算root的高度。本题目需要从孩子节点传入两个信息,1个为孩子是否平衡,同时还需要传入孩子节点高度。当分析递归问题时,需要考虑问题如下,需要从parent传入什么信息,需要从孩子收集什么信息。当需要parent信息,需要前序,需要孩子信息,则为后序。
486+
思路:分治法,后序遍历,左边平衡 && 右边平衡 && 左右两边高度 <= 1, 因为需要返回是否平衡及高度。如果某种情况是不平衡,可直接返回false。考虑三种情况,左边不平衡,右边不平衡,或者左右高度差大于1,都直接返回false,当返回true时,同时计算root的高度。本题目需要从孩子节点传入两个信息,1个为孩子是否平衡,同时还需要传入孩子节点高度。
483487

484488
```cpp
485489
bool isBalanced(root *TreeNode) {

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /