题目描述
给定二叉树的根节点 root
,找出存在于 不同 节点 A
和 B
之间的最大值 V
,其中 V = |A.val - B.val|
,且 A
是 B
的祖先。
(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)
思路
对于整棵树,我们可以做 DFS,在 DFS 的时候记录当前树的最大值和最小值,返回最大值和最小值的差。
那么在 dfs 的时候,我们需要在参数中设置节点、当前树的最大值和最小值;返回最大值和最小值的差。
最终代码:
想得太多
- 忘了更新 max 和 min 的值;
- 更新差值是用 abs 算的,我想的太麻烦了。
- 因为对于 null 直接返回 0,因此不需要判断左右节点是否为 None。
- 更新最大值的时候把 ma 写成 mi 了。