1、思想概述:
将一个二叉树进行区间打印(begin开始,end结束)。 当树为空时,返回空。当begin大于当前节点时,往右走,小于当前节点时往左走。当end小于当前节点时,往左走,若还小,停止遍历,打印前面的所有数字。
2、代码实现
public void printAreaDatas(T begin, T end) {
System.out.println("区间打印");
printAreaDatas(root, begin, end);
System.out.println();
}
public void printAreaDatas(BSTNode<T> root, T begin, T end) {
if (this.root == null) {//树为空
return;
}
if (root.getData().compareTo(begin) > 0) {//当前值比起始值大
printAreaDatas(root.getLeft(), begin, end);//往左走
}
if (root.getData().compareTo(begin) >= 0
&& root.getData().compareTo(end) <= 0) {//当前值比起始值大,比结束值小
System.out.println(root.getData() + " ");//符合要求 打印
if (this.root.getData().compareTo(end) < 0) ;
{//只有当前值比end 值小的时候才有必要访问其右子树
printAreaDatas(root.getRight(), begin, end);
}
}
}