1   一个二叉树,用最高效的方法找到最深层的最左边的孩子和最右边的孩子,并将其节点数据打印出来;其次,找到两者的最深层的父节点,并打印数据,编码实现,2  一个100G的日志文件,里边记载了一行一行的IP V4地址    用最高效的方法找到重复次数最多的IP V4地址  打印并且打印数据大家踊跃发言哦

解决方案 »

  1.   

    第一题的第一问:可以用一个队列来保存节点,层序遍历整棵树,最后读的两个节点,并且这两个节点没有孩子了,那么这两个节点一个是最深的左孩子,一个是右孩子,(加一些出来里,可以区分左孩子与右孩子)
    另一种方法是采用回溯法,深度优先遍历二叉树,找出深度最大的两个节点。第二问:现在已知两节点,要找它们的父节点,可以先先序遍历树,然后再中序遍历树,比如:
    先序:BDFEG 中序:FDBEG,那么要找FG的父节点,那么只需要找FG之间的DBE哪一个最先在先序序列中出现,B最先出现,那么B就是FG的父节点。
      

  2.   

    第二题
    100G文件 这么大 内存映射文件吧MappedByteBuffer out =
          new RandomAccessFile("test.dat", "rw").getChannel()
          .map(FileChannel.MapMode.READ_WRITE, 0, length);
        IPV4地址是一个整数0---->11111111111111111111111111111111,用int吧。
    最后使用数据库存储结果。
    select max.....
      

  3.   

    100G 的 IP 地址文件要有 70 多亿条 IP 地址记录!如果一个日志文件有 100G 大小的话,你就等着受苦吧!