-
2.12
- 让手下找 pq,根据 pq 存在情况判断
-
1.30
- 终止条件:遍历到空节点了,或者找到其中一个了,返回该节点
- 遍历让手下找各自的结果
- 如果两个结果都不为空,则是 root 节点本身
- 如果其中一个不为空,则返回这个节点,因为他先找到的,另一个节点一定在他下面
- 如果都为空,说明没有这俩节点,默认返回 null
-
1.18
- 没记住,记住吧
-
11.12
- 答案有点舒适
- 依旧开头判空(多一个p,q与root判等)
- 递归每个节点后,判断节点左右子节点null的不同情况,这一点很好想
- 答案有点舒适
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(root==null||root==q|root==p) return root;
TreeNode left = lowestCommonAncestor(root.left,p,q);
TreeNode right = lowestCommonAncestor(root.right,p,q);
if(left!=null&&right!=null) return root;
if(left!=null&&right==null) return left;
if(left==null&&right!=null) return right;
//都是null
return null;
}
}- 递归左右树分情况讨论两个是否为空,都不为空则为root,一个为空返回另一个
- “函数返回的是:在当前子树中找到的
p或q,