给出二进制搜索树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;
}
}