zoukankan      html  css  js  c++  java
  • 腾讯实习笔试编程题 满二叉搜索树求三个节点的最低公共祖先

    题目

    对于一棵满二叉搜索树深度为K,节点数为2^k - 1,节点值为[1, 2^k - 1]。给出k和任意三个节点的值,输出包含该三个节点的最小子树的根节点值。

    输入: 4 10 15 13

    输出:12

    思路

    二分搜索,当搜索到节点x时,若x为三个节点之一或三个节点不在以x为根节点的树的子树的同一侧,则当前节点即为所求。否则二分

    代码

     1 import java.util.Scanner;
     2 
     3 
     4 public class Main {
     5 
     6     public static int binarySearch(int a,int b,int c, int left, int right) {
     7         int m = left + (right - left) / 2;
     8 
     9         if((a - m) * (b - m) <= 0 || (a - m) * (c - m) <= 0 || (c - m) * (b - m) <= 0) {
    10             return m;
    11         } else if(a > m) {
    12             return binarySearch(a, b, c, m + 1, right);
    13         } else {
    14             return binarySearch(a, b, c, left, m - 1);
    15         }
    16     }
    17 
    18     public static void main(String[] args) {
    19         Scanner sc = new Scanner(System.in);
    20         int k = sc.nextInt();
    21         int a = sc.nextInt();
    22         int b = sc.nextInt();
    23         int c = sc.nextInt();
    24         System.out.println(binarySearch(a, b, c, 1, (2 << k) - 1));
    25     }
    26 }
  • 相关阅读:
    java笔记之连接数据库
    关于数据集合的使用
    ubuntu下安装MySql
    Android笔记之Broadcast广播机制
    InputStream
    Android笔记之Toast
    jqGrid 复选框实现单选
    layer弹出框包含页面
    input不显示边框
    UUID
  • 原文地址:https://www.cnblogs.com/deadend/p/6663736.html
Copyright © 2011-2022 走看看