当右侧的递归迭代到达状态 2 并返回时,问题就出现了,因为父亲取了一个不应该取的值。
这是我的节点创建者类,它有右侧和左侧:
public class TreeNodo{
public byte vectorPosible[];
public int stage; //my stages and index posision of array
public TreeNodo right; // if goes to right mean 1, in index posision of array
public TreeNodo left; // if goes to right mean 0, in the index posision of array
//contructor
public TreeNodo(byte vectorPosible[], int currentStage){
this.vectorPosible=vectorPosible;
this.stage=currentStage;
this.right=null;
this.left=null;
}
这是我的递归类,我初始化构造函数,此时我开始递归:
public class SolutionTree{
TreeNodo root; //it saves the vector [-1,-1] that its initial stage
//contructor
public SolutionTree(byte vectorPosible[], int currentStage){
this.root=new TreeNodo(vectorPosible, currentStage);
this.generarTreePSR(root, vectorPosible, vectorPosible.length, currentStage+1); //Generate a Tree of Possible Solutions Recursively
}
//Metod to insert Tree Node Recursively
public static void generarTreePSR(TreeNode father,byte vectorPosible[],int maxStage, int currentStage){ //in this case maxStage is 2
TreeNode newNode= new TreeNode(vectorPosible, currentStage);
System.out.println("newNode.left: "+(newNode.left==null));
System.out.println("newNode.right: "+(newNode.right==null));
System.out.println();
System.out.println("newNode stage: "+newNode.stage);
if(newNode.stage==maxStage){ //BASE CASE, IF STAGE == 2
System.out.println("Reached this stage max: "+newNode.stage);
System.out.println("I return");
return;
}else{ // it isn't in the base case, so tree follow growing
System.out.print("Look i'm father and i'm before of left, my vector is: ");
for (int j=0;j<father.vectorPosible.length;j++) { //i show the father vector's
System.out.print(father.vectorPosible[j]);
System.out.print(" ");
}
它不会生成我需要的所有节点。查看包含所有节点的图像: 包含我需要的节点的图像 ,int 我需要递归执行而不是扫描。
弑天下
相关分类