【发布时间】:2018-02-06 09:35:33
【问题描述】:
我的项目要我打印出二叉搜索树的前任和后继。分配要求我将节点的数据作为参数传递。当我尝试打印出给定节点数据的前身时,它给了我0。我不知疲倦地尝试如何解决问题,但没有找到。希望你能找到问题所在。
方法如下:
public void findPredecessor(Node root, int data)
{
int predecessor = 0;
if(root != null)
{
if(root.data == data)
{
if(root.left != null)
{
Node n = root.left;
while(n.right != null) n = n.right;
predecessor= n.data;
}
}
else if(root.data < data)
{
predecessor = root.data;
findPredecessor(root.left, data);
}
}
System.out.print(predecessor);
}
public void printPredecessor(int data)
{
findPredecessor(root, data);
}
【问题讨论】:
-
如果
root.data > data不应该发生什么事吗?你的代码就放弃了。
标签: java tree binary-tree binary-search-tree