Tree DFS
Tree DFS
Tree上的DFS分为两种(Divide Conquer + Traversal和纯Divide Conquer)
- 建立当前/用全局变量(根据不同的方式)
- root为空(返回什么/更新指针)
- 左节点和右节点都为空,用root构建当前解(返回什么/更新指针)
- 左节点和右节点不为空,用左右构建当前解
- 返回当前/选择左,右,中
Divide Conquer + Traversal
不同
- 一般没有全局变量,创建当前变量作为当前最终解
- 通过左节点的最终解和右节点的最终解,计算并更新当前变量
- 判断左节点的最终解,右节点的最终解,当前变量,在三个解中选择一个
- 作为当前层的最终解
- 返回
- 更新传入的参数指针
- (有时会单独建立class Result类)
流程
- 建立当前变量(不一定第一步)
- root为空(返回什么)
- left节点和right节点都为空,用root构建当前解(返回什么/更新指针)
- left节点和right节点不为空,用左右解leftResult, rightResult计算当前解
- 选择符合的解
- 比较 (leftResult,rightResult,result)+ 选出合适的解
- 直接使用:当前解
- 使用选中的解
- 返回
- 更新传入的指针
例题(Minimum Subtree)
例题(Binary Tree Paths)
直接返回最终解
更新全局变量
Divide Conquer
不同
- 一般有全局变量,直接返回/打擂台
- 最终解作为最终返回值
- 通过左节点的最终解和右节点的最终解,更新当前最终解
- 当前最终解作为全局最终解直接返回
流程
- root为空(返回什么)
- 左节点和右节点都为空,用root构建当前解(返回什么)
- 左节点和右节点不为空,用左右构建当前解
- 使用当前最终解返回
例题(Minimum Subtree)
例题(Binary Tree Paths)
- 左右结果构建当前解,直接返回当前解给上一层
- 左右结果构建当前解,直接返回当前解给上一层
Comments
Post a Comment