java在递归方法中保留标记节点的计数
我有一个递归方法,可以遍历二叉搜索树。每次它访问一个具有关键属性的节点时,它都会将该节点插入一个新的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;
}
# 1 楼答案
对。如果递归方法是
void
,只需添加类型为int
的参数count
,并使返回类型为int
。要增加计数器,只需执行count++;
。当你递归调用这个方法时,只需在你的例子中,这个方法不是
void
,这使它稍微困难一些。一个技巧是添加int[]
类型的额外参数。然而,我建议使用私人助手的方法。不要用这个额外的参数暴露可怕的签名