我學習了學習Java 8的lambda表達式,這是通用的N數組樹實現。我有一個遞歸函數來獲取節點中存在的節點總數我很震驚。遞歸函數調用轉換爲樹實現中的lambda表達式java
public class GenericTree<T> {
private GenericTreeNode<T> root;
public GenericTree() {
super();
}
public GenericTreeNode<T> getRoot() {
return this.root;
}
public void setRoot(GenericTreeNode<T> root) {
this.root = root;
}
public int getNumberOfNodes() {
int numberOfNodes = 0;
if(root != null) {
numberOfNodes = getNumberOfnodeRecursiveFunc(root) + 1; //1 for the root!
}
return numberOfNodes;
}
private int getNumberOfnodeRecursiveFunc(GenericTreeNode<T> node) {
Integer numberOfNodes = node.getNumberOfChildren();
for(GenericTreeNode<T> child : node.getChildren()) {
numberOfNodes += getNumberOfnodeRecursiveFunc(child);
}
//node.getChildren().stream().map(child ->this.getNumberOfnodeRecursiveFunc(child));
//return node.getNumberOfChildren() + node.getChildren().stream().collect(Collectors.summingInt(GenericTree::getNumberOfnodeRecursiveFunc));
}}
如何使用lambda表達式遞歸以獲得節點的數量,而不是使用的代碼片段中提到的常規方法的?
注:本人通過多個其他問題去了,他們提供簡單的階乘expression.So請提供此
你打?通過什麼方式?你似乎認爲那裏有一個問題,但我沒有看到一個問題。 –
道歉...如果我的短語不提示...問題是如何遞歸地使用lambda表達式來獲取節點數量,而不是使用代碼片段中提到的傳統方法。 – karthik