>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 17089 个阅读者 刷新本主题
 * 贴子主题:  BST 二叉搜索树 回复文章 点赞(0)  收藏  
作者:tcy032501    发表时间:2021-06-03 08:47:25     消息  查看  搜索  好友  邮件  复制  引用

拜托各位大佬帮我看下我的code有什么错误呀,我的一些test case 是错的,十万火急,在外求学拿分不易!

Input string: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
Level-Order: ABCDEFGHIJKLMNOPQRSTUVWXYZ
THE CORRECT OUTPUT OF THE TEST CASE:(正确输出)
Input string: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
Level-Order: <empty>


YOUR CODE'S OUTPUT:
Input string: DBFACEGD
Level-Order: DBFACEG
THE CORRECT OUTPUT OF THE TEST CASE:
Input string: DBFACEGD
Level-Order: EBFACG

import java.util.Scanner;  // Import the Scanner class

public class BST {
  
  public char key;
  public BST  left;
  public BST  right;

  public BST() {}

  public BST(char c) {
    key   = c;
    left  = null;
    right = null;
  }
  
  public static BST find(BST T, char L) {
    if (T == null || L == T.key)
      return T;
    else if (L < T.key)
      return find(T.left, L);
    else
      return find(T.right, L);
  }

  public static BST insert(BST T, char L) {
    if (T == null)
      return new BST(L);
    if (L < T.key)
      T.left = insert(T.left, L);
    else if (L > T.key)
      T.right = insert(T.right, L);
    return T;
    }

  public static char minValue(BST T) {
    char minv = T.key;
    while (T.left != null) {
      minv = T.left.key;
      T = T.left;
      }
    return minv;
    }  

  public static BST delete(BST T, char L) {
    if (T == null)
      return T;
    if (L < T.key)
      T.left = delete(T.left, L);
    else if (L > T.key)
      T.right =delete(T.right, L);
    else {
      if (T.left == null)
        return T.right;
      else if (T.right == null)
        return T.left;
      T.key = minValue(T.right);
      T.right = delete(T.right, T.key);
    }
    return T;
  }
  
  
  public static void levelOrder(BST T) {
    System.out.print("Level-Order: ");
     if (T==null)
     {
      System.out.println("<empty>");
     return;
     }
     BST.MyQueue queue = new BST().new MyQueue();
     queue.enqueue(T.key);
     while (queue.front != null) {
      BST tempNode = find(T, queue.dequeue().data);
      System.out.print(tempNode.key);
      if (tempNode.left != null) {
        queue.enqueue(tempNode.left.key);
      }
      if (tempNode.right != null) {
        queue.enqueue(tempNode.right.key);
      }
    }
    System.out.println();
  }

public static void main(String[] args) {
  Scanner input = new Scanner(System.in);
  String stream = input.nextLine();
  System.out.println("Input string: " + stream);
  BST root = null;
  for (int i = 0;i < stream.length();i++)
    root = insert(root, stream.charAt(i));
    levelOrder(root);
}
class QNode {
  public char  data;
  public QNode next;

  public QNode(char c) {
    data = c;
    next = null;
  }
}

class MyQueue {
  
  public QNode front;
  public QNode rear;
  
  public MyQueue() {
    front = null;
    rear = null;
  }
  
  public void enqueue(char c) {
    QNode temp = new QNode(c);
    if (front == null)
      front = temp;
    else
      rear.next = temp;
    rear = temp;
  }
  
  public QNode dequeue() {
    QNode temp = null;
    if (front != null) {
      temp  = front;
      front = front.next;
    }
    return temp;
  }
}
}


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->Java语言中的修饰符
  JavaWeb开发-->使用Session(Ⅱ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->ServerSocket用法详解
  精通Spring-->通过Vuex进行状态管理
  Vue3开发-->绑定表单
  [求助] 如何观看孙老师的课程视频
  解决javac编译错误: 编码UTF8/GBK的不可映射字符
  Java虚拟机安全性-class文件检验器
  Java 语言中十大“坑爹”功能!
  HashMap中 get 和 put 操作的具体过程
  Java并发之volatile关键字内存可见性问题
  深入研究java.lang.ThreadLocal类
  Java读取大文件的高效率实现_java大文件
  Eclipse使用指南:常用视图(View) 的用法
  Java入门实用代码:链表元素查找
  Java入门实用代码:100以内整数求和运算
  Java入门实用代码: 方法重载
  Java 入门实用代码:数组扩容
  JAVA日期加减运算
  【Java 并发笔记】CountDownLatch 相关整理
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。