中序遍历输出不了,望大佬解答

不知道错了哪里,中序遍历输出不了`

public class RecordNode {
public Comparable key;
public Object element;
public RecordNode(Comparable key) {
this.key = key;
}
public RecordNode(Comparable key,Object element) {
this.key = key;
this.element = element;
}

}

`public class BSTree {
public BiTreeNode root;
public BSTree() {
root = null;
}
public void inOrderTraverse(BiTreeNode p) {
if(p != null) {
inOrderTraverse(p.lchild);
System.out.print(((RecordNode)p.data).toString() + " ");
inOrderTraverse(p.rchild);
}
}
public Object searchBST(Comparable key) {
if(key == null ||! (key instanceof Comparable)) {
return null;
}
return searchBST(root,key);
}
private Object searchBST(BiTreeNode p, Comparable key) {
// TODO Auto-generated method stub
if(p != null) {
if(key.compareTo(((RecordNode)p.data).key) == 0) {
return p.data;
}
if(key.compareTo(((RecordNode)p.data).key)<0) {
return searchBST(p.lchild,key);
}else {
return searchBST(p.rchild,key);
}
}
return null;
}
public boolean insertBST(Comparable key,Object theElement) {
if(key == null ||! (key instanceof Comparable)) {
return false;
}
if(root == null) {
root = new BiTreeNode(new RecordNode(key,theElement));
return true;
}
return insertBST(root,key,theElement);
}
private boolean insertBST(BiTreeNode p, Comparable key, Object theElement) {
// TODO Auto-generated method stub
if(key.compareTo(((RecordNode)p.data).key) == 0) {
return false;
}
if(key.compareTo(((RecordNode)p.data).key) < 0) {
if(p.lchild == null) {
p.lchild = new BiTreeNode(new RecordNode(key,theElement));
return true;
}else {
return insertBST(p.lchild,key,theElement);
}
}else if(p.rchild == null) {
p.rchild = new BiTreeNode(new RecordNode(key,theElement));
return true;
}else {
return insertBST(p.rchild,key,theElement);
}
}
public Object removeBST(Comparable key) {
if(key == null || key == null ||!(key instanceof Comparable)) {
return null;
}
return removeBST(root,key,null);
}
private Object removeBST(BiTreeNode p, Comparable elemKey, BiTreeNode parent) {
// TODO Auto-generated method stub
if(p != null) {
if(elemKey.compareTo(((RecordNode)p.data).key) < 0) {
return removeBST(p.lchild,elemKey,p);
}else if(elemKey.compareTo(((RecordNode)p.data).key) > 0) {
return removeBST(p.lchild,elemKey,p);
}else if(p.lchild != null && p.rchild != null) {
BiTreeNode innext = p.rchild;
while(innext.lchild != null){
innext = innext.lchild;
}
p.data = innext.data;
return removeBST(p.rchild,((RecordNode)p.data).key,p);
}else {
if(parent == null) {
if(p.lchild != null) {
root = p.lchild;
}else {
root = p.rchild;
}
return p.data;
}
if(p == parent.lchild) {
if(p.lchild != null) {
parent.lchild = p.lchild;
}else {
parent.lchild = p.lchild;
}
}else if(p.lchild != null) {
parent.rchild = p.lchild;
}else {
parent.rchild = p.rchild;
}
return p.data;
}
}
return null;
}
}

下面是测试类
public class Test {

public static void main(String[] args) {
	// TODO Auto-generated method stub
     BSTree bstree = new BSTree();
     int[] k = {50,13,63,8,36,90,5,10,18,70};
     String[] item = {"Wang","Li","Zhang","Liu","Chen","Yang", "Huang","Zhao",
    		 "Wu","Zhou"};	
KeyType[] key = new KeyType[k.length];
ElementType[] elem = new ElementType[k.length];
System.out.println("原序列:");
for(int i =0;i<k.length;i++) {
	key[i] = new KeyType(k[i]);
	elem[i] = new ElementType(item[i]);
	if(bstree.insertBST(key[i],elem[i])) {
		System.out.print("[" + key[i] + "," + elem[i] + "]");
	}
}
System.out.println("\n中序遍历二叉树:");
bstree.inOrderTraverse(bstree.root);
System.out.println();
KeyType keyvalue = new KeyType();
keyvalue.key = 63;
RecordNode found = (RecordNode)bstree.searchBST(keyvalue);
if(found != null) {
	System.out.println("查找关键码:" + keyvalue + ",成功!对应姓氏为:" 
+ found.element);
}else {
	System.out.println("查找关键码:" + keyvalue + ",失败!");
}
keyvalue.key = 39;
found = (RecordNode)bstree.searchBST(keyvalue);
if(found != null) {
	System.out.println("查找关键码:" + keyvalue + ",成功!对应姓氏为:" 
+ found.element);
}else {
	System.out.println("查找关键码:" + keyvalue + ",失败!");
}
keyvalue.key = 13;
found = (RecordNode)bstree.searchBST(keyvalue);
if(found != null) {
	System.out.println("查找关键码:" + keyvalue + ",成功!对应姓氏为:" 
+ found.element);
}else {
	System.out.println("查找关键码:" + keyvalue + ",失败!");
}
System.out.println("\n删除关键码:" + keyvalue + "后的中序遍历序列:");
bstree.inOrderTraverse(bstree.root);
System.out.println(" ");

}
}

这是结果

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值