Реконструкция бинарного дерева
Ограничение по времени : 1秒
пространственные ограничения : 32768K
этот вопрос знание : 队列
栈
Название Описание :
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
}
public int pop() {
}
}
Анализ идей:
Эксплуатация последовательно претерпевает следующие изменения:
Два стеки пусты
-> stack1 не пустой пустой stack2
-> stack1 пустой stack2 не пусто
-> два стека не пустой
Два стеки пусты
Два стеки пусты | STACK1 = [] | stack2 = [] | меры |
---|---|---|---|
Рисунок {1, 2} | STACK1 = [2, 1] | stack2 = [] | 2 * stack1.push |
поп | STACK1 = [] | stack2 = [] | возвращение нулевой |
stack1 не пусто stack2 пусто
1 2 не пусто пусто | STACK1 = [2, 1] | stack2 = [] | меры |
---|---|---|---|
Рисунок {3, 4} | STACK1 = [4, 3, 2, 1] | stack2 = [] | 2 * stack1.push |
поп | STACK1 = [] | stack2 = [2, 3, 4] | 4 * stack1.pop 4 * stack2.push возвращение stack2.pop |
stack1 пустой stack2 не пусто
1 2 не пусто Empty | STACK1 = [] | stack2 = [2, 3, 4] | меры |
---|---|---|---|
Рисунок {5, 6} | STACK1 = [6, 5] | stack2 = [2, 3, 4] | 2 * stack1.push |
поп | STACK1 = [] | stack2 = [3, 4] | вернуться stack2.pop |
Два стека не пустой
Два стека не пустой | STACK1 = [6, 5] | stack2 = [2, 3, 4] | меры |
---|---|---|---|
Рисунок {7, 8} | STACK1 = [8, 7, 6, 5] | stack2 = [2, 3, 4] | 2 * stack1.push |
поп | STACK1 = [6, 5] | stack2 = [3, 4] | вернуться stack2.pop |
Краткое описание:
- Стек ситуацию: всегда stack1.push
- Стек случай:
- stack2 пусто: все элементы стека stack1 в stack2, а затем выполнить stack2.pop
- stack2 не пусто: stack2.pop
Ответ:
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
// 若 stack2 为空:将所有 stack1 元素入栈到 stack2
if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}