バイナリツリー、ツリー2つの入力ノードを考えると、彼らは最低の共通の祖先を求めます。
自身を含むツリーノードの祖先ノード。
注意:
;バイナリ入力が空でない
2つの入力ノードが空にはならず、バイナリツリーのノードであり、
サンプル
バイナリツリー[8、12、2、NULL 、NULL、6,4、NULL、NULL、NULL、NULL] 以下に示すように
8
/
122
/
64
-
ツリーのノードは、2入力12、最下位共通祖先ツリーノード8の出力である場合。
-
ツリーの入力ノードは、ツリー2の出力ノードの最下位共通祖先2及び6である場合。
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(!root) return NULL;
if(root == p || root == q) return root;
TreeNode* Left = lowestCommonAncestor(root -> left,p,q);
TreeNode* Right = lowestCommonAncestor(root -> right,p,q);
if(Left && Right) return root;
if(Left) return Left;
if(Right) return Right;
return NULL;
}
};