题目:
思路:
- 在树的结构中,关键是运用递归的思想。
- 确定递归终止条件,就是不需要在进行递归了即不需要在求左右子树的结果,在本题中如果检验的结点为null或者检验的结点即为所求,就不需要进行下去了。
- 分析求得的左右子树结果怎样处理,左右子树有两种结果,一个为null,一个为该结点,两个子树结果若都不为null,则说明两个结点分别为所给的两个结点,此时树根即为最终结果。
代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* public int val;
* public TreeNode left;
* public TreeNode right;
* public TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode LowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(root==null)
{return null;}
if(root.val==p.val||root.val==q.val)
{return root;}
TreeNode leftlow=LowestCommonAncestor(root.left,p,q);
TreeNode rightlow=LowestCommonAncestor(root.right,p,q);
if(leftlow==null)return rightlow;
if(rightlow==null)return leftlow;
return root;
}
}