這題的目標,是找出兩個節點 p, q 的共同且 lowest 的祖先節點。又因為是 BST,所以一個節點的左子樹肯定都比它數值小、右子樹則會比較大。
觀察範例,會發現只要找到值介於 p, q 間的 node 就好。
程式碼
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(p->val > q->val)
swap(p, q);
while(true)
{
if(p->val <= root->val && root->val <= q->val)
return root;
if(root->val > q->val)
root = root->left;
else
root = root->right;
}
}
};
沒有留言:
張貼留言