При заданном обходе предзаказа дерева двоичного поиска A длины N. Возвращает массив целых чисел, представляющих конечные узлы дерева двоичного поиска, из заданного предзаказа. Вы можете вернуть листовые узлы в любом порядке.
Я сделал это с помощью geeksforgeeks, но я не могу понять, как код играет роль стека и почему я не могу напечатать узлы, которые препятствуют уменьшению порядка
public class Solution {
public ArrayList<Integer> solve(ArrayList<Integer> A) {
ArrayList<Integer> al=new ArrayList<Integer>();
Stack<Integer> s=new Stack<>();
for(int i=0,j=1;j<A.size();i++,j++)
{
boolean f=false;
if(A.get(i)>A.get(j))
s.push(A.get(i));
else
{
while(!s.isEmpty())
{
if(A.get(j)>s.peek())
{
s.pop();
f=true;
}
else
break;
}
}
if(f)
al.add(A.get(i));
}
al.add(A.get(A.size()-1));
return al;
}
}