【发布时间】:2012-11-07 14:24:51
【问题描述】:
我目前正在通过将我的程序从 C++ 编写到 Java 来学习 Java。 我正在尝试使用递归二叉搜索树打印数据,但它没有打印
这是我的代码:
public class PersonRec {
int bribe;
PersonRec lchild;
PersonRec rchild;
}
import java.util.Scanner;
public class Tree {
private PersonRec root;
public Tree()
{
root = null;
}
public void Add()
{
int aBribe;
Scanner scan = new Scanner(System.in);
System.out.println("Enter person's contribution: ");
aBribe = scan.nextInt();
Insert(root, aBribe);
}
public void Insert(PersonRec root, int aBribe)
{
if(root == null)
{
root = new PersonRec();
root.rchild = null;
root.lchild = null;
root.bribe = aBribe;
}
else if(aBribe < root.bribe)
{
Insert(root.lchild, aBribe);
}
else
{
Insert(root.rchild, aBribe);
}
}
public void view()
{
if(root == null)
{
System.out.println("Tree is empty" + "\n");
}
else
DisplayTree(root);
}
public void DisplayTree(PersonRec root)
{
if(root == null)
return;
DisplayTree(root.lchild);
System.out.println(" " + root.bribe);
System.out.println("\n");
DisplayTree(root.rchild);
}
public static void main(String args[])
{
Tree myList = new Tree();
int choice;
do
{
Scanner scan = new Scanner(System.in);
System.out.println("\nMenu\n");
System.out.println("==============================\n\n");
System.out.println("1. Add student to waiting list\n");
System.out.println("2. View waiting list\n");
System.out.println("3. Exit program \n_");
System.out.println("Please enter choice: ");
choice = scan.nextInt();
switch(choice)
{
case 1: myList.Add();
break;
case 2: myList.view();
break;
}
}
while(choice != 3);
}
}
当我输入 1 时,我插入贿赂金额示例:23 当我再次从菜单中输入 2 时,它没有被插入到我的树中,它说“树是空的”
谢谢
【问题讨论】:
-
这个
aBribe < root.bribe是怎么做的?这甚至行得通吗? -
那句话有错吗> aBribe
-
有几个想法可以帮助您避免很多挫败感:首先,使用 IDE。 Eclipse 和 Netbeans 是两个最流行的选择。 IDE 可以执行比语言更严格的规则。例如,您可以将其配置为将对方法参数的重新分配标记为警告或错误。 (这会对你有所帮助。)你会得到一个调试器。我的另一个建议是学习 Java naming conventions,特别是方法名称应该始终以小写字符开头。
-
我使用 Eclipse 并了解 java 命名约定。我不知道你在说什么
-
我说的是
Add()、DisplayTree()而不是add()和displayTree()的方法。
标签: java data-structures recursion