import java.util.Stack;
//汉诺塔非递归解法(利用栈模拟递归)
class Node{
String from,to,mid;
int count;
int state;
public Node(String from, String to,String mid, int count, int state) {
super();
this.from = from;
this.to = to;
this.mid=mid;
this.count = count;
this.state = state;
}
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Stack<Node> stack=new Stack<>();
int N=20;
stack.push(new Node("A", "B","C", N, 1));
while(!stack.isEmpty()){
Node node=stack.peek();
if(node.count==1){
System.out.println(node.from+"--->"+node.to);
stack.pop();
}
else{
if(node.state==1){
stack.push(new Node(node.from, node.mid,node.to, node.count-1, 1));
node.state=2;
}
else if(node.state==2){
System.out.println(node.from+"--->"+node.to);
node.state=3;
stack.push(new Node(node.mid, node.to, node.from, node.count-1, 1));
}
else if(node.state==3){
stack.pop();
}
}
}
}
}
汉诺塔非递归解法
最新推荐文章于 2025-05-20 14:55:47 发布