package Ġcom . book n ara . problem . tree Ċ Ċ /** Ċ Ġ* Ġ 2 3 6 . ĠLow est ĠCommon ĠAn cestor Ġof Ġa ĠBinary ĠTree Ġ( Medium ) Ċ Ġ* Ġhttps :// leetcode . com / problems / lowest - common - ancestor - of - a - binary - tree / Ċ Ġ*/ Ċ class ĠL on gest Common Ancestor Of Binary Tree Kt Ġ{ ĊĠĠĠ Ġ// ĠT : O ( n ), ĠS : O ( h ) ĊĠĠĠ Ġfun Ġlowest Common Ancestor ( root : ĠTreeNode ?, Ġp : ĠTreeNode ?, Ġq : ĠTreeNode ?): ĠTreeNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġbase Ġbase ĊĠĠĠĠĠĠĠ Ġif Ġ( root Ġ== Ġnull ) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( p ?. ` val ` Ġ== Ġroot .` val ` Ġ|| Ġq ?. ` val ` Ġ== Ġroot .` val `) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġroot ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġlowest Common Ancestor ( root . left , Ġp , Ġq ) ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġlowest Common Ancestor ( root . right , Ġp , Ġq ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( left Ġ== Ġnull Ġ&& Ġright Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( left Ġ== Ġnull ) Ġreturn Ġright ĊĠĠĠĠĠĠĠ Ġif Ġ( right Ġ== Ġnull ) Ġreturn Ġleft ĊĊĠĠĠĠĠĠĠ Ġreturn Ġroot ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠTreeNode ( var Ġ` val `: ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġleft : ĠTreeNode ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġright : ĠTreeNode ? Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }