题解 | #二叉搜索树的最近公共祖先#

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

https://www.nowcoder.com/practice/d9820119321945f588ed6a26f0a6991f

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */

#include <vector>
class Solution {
public:
    vector<int> getPath(TreeNode* root, int target){
        vector<int> vec;
        while(root != nullptr) {
            vec.push_back(root->val);
            if (root->val > target) {
                root = root->left;
            }else if (root->val < target) {
                root = root->right;
            }else {
                break;
            }
        }
        return vec;
    }
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @param p int整型 
     * @param q int整型 
     * @return int整型
     */
    int lowestCommonAncestor(TreeNode* root, int p, int q) {
        // write code here
        vector<int> pathP, pathQ;
        pathP = getPath(root, p);
        pathQ = getPath(root, q);
        int result;
        for (int i=0; i< pathP.size() && i <pathQ.size(); i++) {
            if (pathP[i] == pathQ[i]) {
                result = pathP[i];
            }
            else {
                break;
            }
        }
        return result;
    }
};

在线编程练习 文章被收录于专栏

C++在线编程练习题解

全部评论

相关推荐

点赞 评论 收藏
分享
面了100年面试不知...:太礼貌,还是
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务