【发布时间】:2019-10-13 20:11:40
【问题描述】:
我的计算二叉树中叶子数量的递归函数工作正常:
public static int numberOfLeaves(BinaryTree<String> root) {
if (root == null) return 0;
else if(root.isLeaf()) return 1;
int left = numberOfLeaves(root.leftTree);
int right = numberOfLeaves(root.rightTree);
return (left + right);
}
但现在我想将所有叶子的数据汇总在一个List 中并返回。
看看我绝望的尝试:
public ArrayList<String> getDataLeaves(BinaryTree<String> root) {
ArrayList<String> list = new ArrayList<>();
if (root == null) return list;
else if (root.isLeaf()) list.add(root.data);
else if(root.leftTree != null ) getDataLeaves(root.leftTree);
else getDataLeaves(root.rightTree);
return list;
}
我可以(我如何)使用我的 numberOfLeaves 函数的功能/样式来帮助我编写一个 recursive 函数来总结所有叶子的数据在列表中并返回它。
注意:
节点的类型为BinaryTree<String>
以data、leftTree、RightTree 作为实例变量。
【问题讨论】:
-
这对于擅长递归的人来说应该是件容易的事,我的大脑还没有习惯递归来帮助自己。提前谢谢 :)
标签: java recursion binary-tree