zoukankan      html  css  js  c++  java
  • [PAT] 1143 Lowest Common Ancestor (30 分)Java

    The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U and V as descendants.

    A binary search tree (BST) is recursively defined as a binary tree which has the following properties:

    • The left subtree of a node contains only nodes with keys less than the node's key.
    • The right subtree of a node contains only nodes with keys greater than or equal to the node's key.
    • Both the left and right subtrees must also be binary search trees.

    Given any two nodes in a BST, you are supposed to find their LCA.

    Input Specification:

    Each input file contains one test case. For each case, the first line gives two positive integers: M (≤ 1,000), the number of pairs of nodes to be tested; and N (≤ 10,000), the number of keys in the BST, respectively. In the second line, N distinct integers are given as the preorder traversal sequence of the BST. Then M lines follow, each contains a pair of integer keys U and V. All the keys are in the range of int.

    Output Specification:

    For each given pair of U and V, print in a line LCA of U and V is A. if the LCA is found and A is the key. But if A is one of U and V, print X is an ancestor of Y. where X is A and Y is the other node. If U or V is not found in the BST, print in a line ERROR: U is not found. or ERROR: V is not found. or ERROR: U and V are not found..

    Sample Input:

    6 8
    6 3 1 2 5 4 8 7
    2 5
    8 7
    1 9
    12 -3
    0 8
    99 99
    

    Sample Output:

    LCA of 2 and 5 is 3.
    8 is an ancestor of 7.
    ERROR: 9 is not found.
    ERROR: 12 and -3 are not found.
    ERROR: 0 is not found.
    ERROR: 99 and 99 are not found.


     1 package pattest;
     2 
     3 import java.util.Scanner;
     4 import java.util.List;
     5 import java.util.ArrayList;
     6 
     7 /**
     8  * @Auther: Xingzheng Wang
     9  * @Date: 2019/2/28 22:14
    10  * @Description: pattest
    11  * @Version: 1.0
    12  */
    13 public class PAT1143 {
    14 
    15     public static void main(String[] args) {
    16         Scanner sc = new Scanner(System.in);
    17         List<Integer> list = new ArrayList<>();
    18         int m = sc.nextInt();
    19         int n = sc.nextInt();
    20         int u, v, a = -1;
    21         int[] preOrder = new int[n];
    22         for (int i = 0; i < n; i++) {
    23             preOrder[i] = sc.nextInt();
    24             list.add(preOrder[i]);
    25         }
    26         for (int i = 0; i < m; i++) {
    27             u = sc.nextInt();
    28             v = sc.nextInt();
    29             for (int j = 0; j < n; j++) {
    30                 a = j;
    31                 if ((preOrder[j] >= u && preOrder[j] <= v) || (preOrder[j] <= u && preOrder[j] >= v)) {
    32                     break;
    33                 }
    34             }
    35             if (list.contains(u) == false && list.contains(v) == false) {
    36                 System.out.printf("ERROR: %d and %d is not found.
    ", u, v);
    37             } else if (list.contains(u) == false || list.contains(v) == false) {
    38                 System.out.printf("ERROR: %d is not found.
    ", list.contains(u) == false ? u : v);
    39             } else if (preOrder[a] == u || preOrder[a] == v) {
    40                 System.out.printf("%d is an ancestor of %d.
    ", preOrder[a], preOrder[a] == u ? v : u);
    41             } else {
    42                 System.out.printf("LCA of %d and %d is %d.
    ", u, v, preOrder[a]);
    43             }
    44         }
    45     }
    46 }
  • 相关阅读:
    sqlservr 命令行启动
    提高程序性能、何为缓存
    NoSQL和MemeryCache的出现意味着传统数据库使用方式的变革吗?
    jQuery UI Autocomplete是jQuery UI的自动完成组件
    MongoDB
    一步步 jQuery (一)概念,使用,$名称冲突4种解决方法,使用层次及次数问题
    淘宝API开发系列
    MongoDB学习笔记
    WF Workflow 状态机工作流 开发
    MongoDb与MVC3的增删改查采用官方驱动
  • 原文地址:https://www.cnblogs.com/PureJava/p/10498242.html
Copyright © 2011-2022 走看看