Java传入二叉树结点参数问题

酸橙子不好吃 2018-03-26 07:28:12
创建了一个二叉树,在调用searchNode()时出了问题,请问如何将二叉树结点参数传入方法呢?



//*************主方法******
public static void main(String [] args) {

String preStr = "AB#DE###C##";
BiTree T = new BiTree(preStr);

BiTreeNode x = T.searchNode(T.getRoot(),'D');

System.out.println(x.data);
}

//出的问题:Exception in thread "main" java.lang.NullPointerException



//***************二叉树结点******************************
public class BiTreeNode {
public Object data;

public BiTreeNode lchild, rchild;

public BiTreeNode() {
this(null);
}

public BiTreeNode(Object data) {
this(data, null, null);
}

public BiTreeNode(Object data, BiTreeNode lchild, BiTreeNode rchild) {
this.data = data;
this.lchild = lchild;
this.rchild = rchild;
}
}

//**********二叉树*********************
public class BiTree {

public BiTreeNode root;

public BiTree() {
this.root = null;
}

public BiTree(BiTreeNode root) {
this.root = root;
}

private static int index = 0;

public BiTree(String preStr) {
char c = preStr.charAt(index++);
if (c != '#') {
root = new BiTreeNode(c);
root.lchild=new BiTree(preStr).root;
root.rchild=new BiTree(preStr).root;
} else
root = null;
}

public BiTreeNode getRoot() {
return root;
}

public void setRoot(BiTreeNode root) {
this.root = root;
}



public BiTreeNode searchNode(BiTreeNode T,Object x) {
if(T != null) {
if(T.equals(x))
return T;
else {
BiTreeNode lresult = searchNode (T.lchild,x);
return lresult != null ? lresult : searchNode(T.rchild,x);
}
}
return null;
}


}



...全文
250 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
伫望-向北 2018-03-27
  • 打赏
  • 举报
回复
最明显的一点是BiTreeNode 这个类没有重写equals方法,searchNode方法中T.equals(x)一直没false,另外你这个二叉树写的也有问题。

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧