二叉树搜索树的最近公共祖先

题目:

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
例如,给定如下二叉搜索树: root = [6, 2, 8, 0, 4, 7, 9, null, null, 3, 5]

Alt

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6 
解释: 节点 2 和节点 8 的最近公共祖先是 6。

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出: 2
解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。

解析:

使用递归求解,直接上代码,秒懂。

参考答案:

/***
*	struct TreeNode{
*		int val;
*		TreeNode *left;
*		TreeNode *right;
*	};
*/

class Solution{
public:
	TreeNode *lowestCommonAncestor(TreeNode *root, TreeNode *p, TreeNode *q){
		if(root == NULL)
			return nullptr;
		if(p->val < root->val && q->val < root->val){
			return lowestCommonAncestor(root->left, p, q);
		}else if(p->val > root->val && q->val > root->val){
			return lowestCommonAncestor(root->right, p, q);
		}else{
			return root;
		}
	}
};

你可能感兴趣的:(剑指offer)