0%
题解方法
深度优先搜索
边界条件
- 当前节点为空,说明搜到底部,搜索结束。
- 当前节点等于目标节点,说明搜到目标节点,返回当前节点。
搜索路径
- 分别搜索当前节点的左右子树。
- 如果某一子树为空,则说明目标节点均在另一棵子树上。
- 否则目标节点分别在两子树上。
核心代码
深度优先搜索
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public TreeNode searchCommonAncestor(TreeNode node, TreeNode p, TreeNode q) { if (null == node) { return null; } if (node == p || node == q) { return node; }
TreeNode left = searchCommonAncestor(node.left, p, q); TreeNode right = searchCommonAncestor(node.right, p, q);
if (null == left) { return right; } if (null == right) { return left; }
return node; }
|
题目来源