【发布时间】:2016-02-27 16:25:22
【问题描述】:
我有一个遍历二叉搜索树的递归方法。每次它访问具有关键属性的节点时,它都会获取该节点并将其插入到新的 BST 中。我的问题是我需要计算有多少节点具有关键元素。我很难用递归方法做到这一点。有谁知道如何在递归方法中实现“计数器”。我还在下面发布了我的代码。
public BookBST TraverseInOrder_Pblshr(Node localRoot, String key, BookBST B){
if (localRoot!=null){
TraverseInOrder_Pblshr(localRoot.leftChild, key, B);
if(localRoot.B1.GetPublisher().equals(key)){ // if node matches key
B.insert(localRoot.B1,3); // insert into BST (using publisher to order)
//System.out.println(localRoot.B1.GetPublisher()+ " this is item has been inserted into subtree");
//System.out.println(localRoot.B1.GetTitle());
}
TraverseInOrder_PubYr(localRoot.rightChild, key, B);
};
return B;
}
【问题讨论】:
-
为什么计算这些东西是
TraverseInOrder_Pblshr方法的工作? (或者..._PubYr方法,不管它是什么。)调用者以B的引用开始,所以它可以保存B的大小,然后运行这个方法,然后比较B的新大小后。区别在于拥有密钥的项目数量。 -
想想看……你为什么要返回
B?调用者已经拥有它。