235. Lowest Common Ancestor of a Binary Search Tree

来源:互联网 发布:远程oracle数据库拷贝 编辑:程序博客网 时间:2024/06/06 17:59

1、题目描述

输入一个BST和两个节点,返回他们的最低公共祖先。


2、思路

如果两个节点值一个小于或等于根节点值,另一个大于或等于根节点值,则说明它们分别在根节点上或者左右两棵子树上,

所以返回根节点。

如果两个节点都小于根节点值,则从左子树再开始找;

如果两个节点都大于根节点值,则从右子树再开始找。


3、代码

    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {        if(!root||!p||!q) return root;        if(p->val <= root->val &&  q->val >= root->val || q->val <= root->val &&  p->val >= root->val)            return root;        if(p->val < root->val &&  q->val < root->val)            return lowestCommonAncestor(root->left, p,q);        else            return lowestCommonAncestor(root->right,p,q);    }


阅读全文
0 0
原创粉丝点击