gpt4 book ai didi

java - 用递归方法记录标记节点的数量

转载 作者:行者123 更新时间:2023-11-30 07:46:15 26 4
gpt4 key购买 nike

我有一个遍历二叉搜索树的递归方法。每次访问具有关键属性的节点时,它都会将该节点插入到新的 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;
}

最佳答案

Does anyone know how to implement a "counter" in a recursive method.

是的。如果递归方法是void,则只需添加一个int类型的参数count并将返回类型设置为int 。要增加计数器,只需执行 count++;。当您递归调用该方法时,只需执行

count = recursiveMethod(count);

就您而言,该方法不是 void,这使得它稍微困难一些。一个技巧是添加一个 int[] 类型的额外参数。不过,我建议为此使用私有(private)辅助方法。不要用这个额外的参数暴露可怕的签名。

public BookBST TraverseInOrder_Pblshr(Node localRoot, String key, BookBST B){
return helper(Node localRoot, String key, BookBST B, new int[1]);
}

private BookBST helper(Node localRoot, String key, BookBST B, int[] counter) {
// You should call **this** method recursiviely, not TraverseInOrder_Pblshr. E.g.
// helper(localRoot.leftChild, key, B, counter);
// To increment the counter, just do counter[0]++;
}

关于java - 用递归方法记录标记节点的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33907042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com