二叉搜索树的预排序中的叶节点

时间:2019-10-26 15:52:32

标签: java stack binary-search-tree preorder

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

0 个答案:

没有答案