Skip to content

Commit

Permalink
Update 01.Tree-DP.md
Browse files Browse the repository at this point in the history
  • Loading branch information
itcharge committed Jul 12, 2023
1 parent 03011d8 commit 957ed31
Showing 1 changed file with 8 additions and 36 deletions.
44 changes: 8 additions & 36 deletions Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,45 +4,17 @@
![](https://qcdn.itcharge.cn/images/20230418114342.png)

> **树形 DP 的关键思路**:先通过递归的方式求解每棵子树,然后在回溯时,自底向上地从子节点向上进行状态转移。只有在当前节点的所有子树求解完毕之后,才可以求解当前节点,以及继续向上进行求解。
在使用树形 DP 时,常用的方向有以下两种:

## 2. 树形 DP 的简单例子
1. **自底向上**:通过递归的方式求解每棵子树,然后在回溯时,自底向上地从子节点向上进行状态转移。只有在当前节点的所有子树求解完毕之后,才可以求解当前节点,以及继续向上进行求解。
2. **自顶向下**:从根节点开始向下递归,逐层计算子节点的状态。这种方法常常使用记忆化搜索来避免重复计算,提高效率。

### 2.1 二叉树的直径
自顶向下的树形 DP 问题比较少见,大部分树形 DP 都是采用「自底向上」的方向进行推导。

#### 2.1.1 题目链接
## 2. 树形 DP 的简单例题

- [543. 二叉树的直径 - 力扣](https://leetcode.cn/problems/diameter-of-binary-tree/)
下面以这道题为例,介绍一下树形 DP 的一般解题思路。

#### 2.1.2 题目大意
## 3. 换根树形 DP

**描述**:给定一个二叉树的根节点 $root$。

**要求**:计算该二叉树的直径长度。

**说明**

- **二叉树的直径长度**:二叉树中任意两个节点路径长度中的最大值。
- 两节点之间的路径长度是以它们之间边的数目表示。
- 这条路径可能穿过也可能不穿过根节点。

**示例**

- 示例 1:

```Python
给定二叉树:
1
/ \
2 3
/ \
4 5
输出:3
解释:该二叉树的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
```

#### 2.1.3 解题思路



## 3. 树形 DP 的应用
## 4. 树形 DP 的应用

0 comments on commit 957ed31

Please sign in to comment.