# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = NoneclassSolution:deflowestCommonAncestor(self,root:TreeNode,p:TreeNode,q:TreeNode)->TreeNode:while1:ifroot.val<p.valandroot.val<q.val:root=root.rightelifroot.val>p.valandroot.val>q.val:root=root.leftelse:returnroot
1 2 3 4 5 6 7 8 910111213141516171819202122
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */classSolution{publicTreeNodelowestCommonAncestor(TreeNoderoot,TreeNodep,TreeNodeq){while(true){if(root.val<p.val&&root.val<q.val){root=root.right;}elseif(root.val>p.val&&root.val>q.val){root=root.left;}else{returnroot;}}}}
1 2 3 4 5 6 7 8 9101112131415161718192021
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */classSolution{public:TreeNode*lowestCommonAncestor(TreeNode*root,TreeNode*p,TreeNode*q){if(root->val<p->val&&root->val<q->val){returnlowestCommonAncestor(root->right,p,q);}if(root->val>p->val&&root->val>q->val){returnlowestCommonAncestor(root->left,p,q);}returnroot;}};
1 2 3 4 5 6 7 8 9101112131415161718
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */funclowestCommonAncestor(root,p,q*TreeNode)*TreeNode{ifroot.Val<p.Val&&root.Val<q.Val{returnlowestCommonAncestor(root.Right,p,q)}ifroot.Val>p.Val&&root.Val>q.Val{returnlowestCommonAncestor(root.Left,p,q)}returnroot}