zoukankan      html  css  js  c++  java
  • 11.8 实现数据结构和算法支持track和rank操作。

    track操作类似与插入操作。

    rank操作返回比当前元素小或者相等的元素数。

    思路:track操作插入构造BST(没有保证平衡),但是节点增加一个leftSize,这里学习一下。

    public class Solution {
        private static RankNode root = null;
    
        public static void track(int number) {
            if (root == null) {
                root = new RankNode(number);
            } else {
                root.insert(number);
            }
        }
    
        public static int getRankOfNumber(int number) {
            return root.getRank(number);
        }
    
        public static void main(String[] args) {
            track(20);
            track(15);
            track(25);
            track(10);
            track(23);
            track(5);
            track(13);
            track(24);
            System.out.println(getRankOfNumber(20));
            System.out.println(getRankOfNumber(15));
            System.out.println(getRankOfNumber(8));
    
        }
    }
    
    class RankNode {
        int val;
        int leftSize;
        RankNode left;
        RankNode right;
    
        public RankNode(int v) {
            val = v;
        }
    
        public void insert(int t) {
            if (t <= val) {
                if (left != null) {
                    left.insert(t);
                } else {
                    left = new RankNode(t);
                }
                leftSize++;
            } else {
                if (right != null) {
                    right.insert(t);
                } else {
                    right = new RankNode(t);
                }
            }
        }
    
        public int getRank(int t) {
            if (t == val) {
                return leftSize;
            } else if (t < val) {
                if (left == null)
                    return -1;
                else
                    return left.getRank(t);
            } else {
                if (right == null)
                    return -1;
                else {
                    return right.getRank(t) + leftSize + 1;
                }
            }
    
        }
    
    }
  • 相关阅读:
    WPF中任务栏只显示主窗口
    makefile经典教程
    Linux常见指令大全
    ubuntu下 fdisk用法
    将SD系统启动卡恢复成普通卡
    1、采用SD启动盘bootingLinux
    Soc常见问题
    ARM Linux 3.x的设备树(Device Tree)
    DS-5获取License
    Soc EmbeddedDesign Suite (EDS)13.1.0.162安装
  • 原文地址:https://www.cnblogs.com/jdflyfly/p/3932950.html
Copyright © 2011-2022 走看看