Tag: 递归

如何深度复制二叉树?

我想使用自己的Node类在Java中实现树结构。 但我很困惑如何做一个深拷贝来复制树。 我的Node类是这样的: public class Node{ private String value; private Node leftChild; private Node rightChild; …. 我是递归的新手,所以我可以学习任何代码吗? 谢谢!

递归更改:如何修改算法以打印所有组合?

我有一个算法递归地以下列方式进行更改: public static int makeChange(int amount, int currentCoin) { //if amount = zero, we are at the bottom of a successful recursion if (amount == 0){ //return 1 to add this successful solution return 1; //check to see if we went too far }else if(amount < 0){ //don't count this try if we went too […]

我如何迭代二叉树?

现在我有 private static void iterateall(BinaryTree foo) { if(foo!= null){ System.out.println(foo.node); iterateall(foo.left); iterateall(foo.right); } } 你能把它改成Iteration而不是递归吗?

java在递归函数中保留信息

是否可以通过java的辅助函数保留信息,而不使用静态变量。 例如, public void foo(){ int v = 0; fooHelper(2); } public void fooHelper(int depth){ v++; fooHelper(depth-1) } 也就是说,我想更新变量v而不丢失每个递归情况的信息,而不必访问函数外部的变量。

递归方法总是比Java中的迭代方法更好吗?

递归方法总是比Java中的迭代方法更好吗? 它们也可以用来代替迭代,反之亦然吗?

在没有递归的情况下查找二叉树的最大深度

查找二进制树的最大深度深度的递归机制非常简单,但是如果没有递归,我们怎样才能有效地执行它,因为我有一个大树,我宁愿避免这种递归。 //Recursive mechanism which I want to replace with non-recursive private static int maxDepth(Node node) { if (node == null) return 0; return 1 + Math.max(maxDepth(node.left), maxDepth(node.right)); } PS:我正在寻找Java的答案。

最长递增序列2D矩阵递归

我被提出了一项新的家庭作业,至少可以说有点令人沮丧。 基本上,我创建了一个2D整数数组,如下所示: 97 47 56 36 60 31 57 54 12 55 35 57 41 13 82 80 71 93 31 62 89 36 98 75 91 46 95 53 37 99 25 45 26 17 15 82 80 73 96 17 75 22 63 96 96 36 64 31 99 86 12 80 42 […]

二叉树直径 – 更好的设计

我写了一个代码来查找二叉树的直径。 需要以下建议: 我可以不在类级别使用静态变量吗? 算法是罚款/任何建议? public class DiameterOfTree { public static int diameter = 0; public static int getDiameter(BinaryTreeNode root) { if (root != null) { int leftCount = getDiameter(root.getLeft()); int rightCount = getDiameter(root.getRight()); if (leftCount + rightCount > diameter) { diameter = leftCount + rightCount; System.out.println(“—diameter————->” + diameter); } if ( leftCount > rightCount) { […]

哪个递归方法更好,为什么对于整数的反向数字?

public static int recursiveReverse(int number, int reversenumber){ if(number <= 0) { return reversenumber; } reversenumber = reversenumber * 10 + (number % 10); number = number/10; return recursiveReverse(number, reversenumber); } 要么 private static int reversenumber = 0; public static int recursiveReverse(int number){ if(number <= 0) { return reversenumber; } reversenumber = reversenumber * 10 + […]

递归构造函数调用

public class LecturerInfo extends StaffInfo { private float salary; public LecturerInfo() { this(); this.Name = null; this.Address = null; this.salary=(float) 0.0; } public LecturerInfo(String nama, String alamat, float gaji) { super(nama, alamat); Name = nama; Address = alamat; salary = gaji; } @Override public void displayInfo() { System.out.println(“Name :” +Name); System.out.println(“Address :” +Address); System.out.println(“Salary :” […]