LeetCode 236 最近公共祖先


題目:找p和q的最近公共祖先

理解:

當遍歷到一個root點的時候,

1.判斷root是不是null如果root為null,那么就無所謂祖先節點,直接返回null就好了

2.如果root的左子樹存在p,右子樹存在q,那么root肯定就是最近祖先

3.如果pq都在root的左子樹,那么就需要遞歸root的左子樹,右子樹同理

 

代碼:

 1 TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
 2     if(root == NULL || root == p || root ==q) return root;
 3     TreeNode* left = lowestCommonAncestor(root->left, p, q);
 4     TreeNode* right = lowestCommonAncestor(root->right, p, q);
 5     if(left && right){
 6         return root;
 7     }else{
 8         return left == NULL ? right : left;
 9     }
10 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM