/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/classSolution{publicTreeNodelowestCommonAncestor(TreeNode root,TreeNode p,TreeNode q){// 葉子結(jié)點 & 已經(jīng)找到 p or q 的情況下返回 rootif(root ==null|| root == p || root == q){return root;}TreeNode right =lowestCommonAncestor(root.right, p, q);TreeNode left =lowestCommonAncestor(root.left, p, q);// left == null的情況,說明兩結(jié)點都在root的右側(cè)if(left ==null){return right;}// 類似上,都在左側(cè)if(right ==null){return left;}// 否則說明分布在root的左右兩側(cè),那么root就是最近公共父結(jié)點。return root;}}