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

第一种为通用一些的解法。

public int lowestCommonAncestor (TreeNode root, int p, int q) {
        // write code here
        TreeNode node=dfs(root,p,q);
        return node.val;
    }
    public TreeNode dfs(TreeNode root,int p,int q){
        if(root==null||root.val==p||root.val==q) return root;
        TreeNode left=dfs(root.left,p,q);
        TreeNode right=dfs(root.right,p,q);
        if(left==null) return right;
        if(right==null) return left;
        return root;
    }

第二种解法为利用二叉搜索树的性质。<q&&<p在左边>p&&>q在右边,在中间即为一大一小,直接返回即可。

public int lowestCommonAncestor (TreeNode root, int p, int q) {
        // write code here
      if(root.val<p&&root.val<q) return lowestCommonAncestor(root.right,p,q);
      if(root.val>p&&root.val>q) return lowestCommonAncestor(root.left,p,q);
      return root.val;
    }


全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:13
点赞 评论 收藏
分享
06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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