zoukankan      html  css  js  c++  java
  • 剑指 Offer 68

    思路

    方法一:迭代

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
    13         while(root != NULL) {
    14             if(p->val < root->val && q->val < root->val) {
    15                 root = root->left;
    16             } else if(p->val > root->val && q->val > root->val) {
    17                 root = root->right; 
    18             } else {
    19                 break;
    20             }
    21         }
    22 
    23         return root;
    24     }
    25 };

    方法二:递归

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
    13         if(root->val < p->val && root->val < q->val)
    14             return lowestCommonAncestor(root->right, p, q);
    15         if(root->val > p->val && root->val > q->val)
    16             return lowestCommonAncestor(root->left, p, q);
    17         return root;
    18     }
    19 };

    参考

    面试题68 - I. 二叉搜索树的最近公共祖先(迭代 / 递归,清晰图解)

  • 相关阅读:
    Java
    Java
    Java与正则表达式
    Java与UML
    用IKVMC将jar转成dll供c#调用
    日历
    提取多层嵌套Json数据
    微信公众平台获取用户openid
    配置IISExpress允许外部访问
    英文单词学习
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/13986070.html
Copyright © 2011-2022 走看看