代码之家  ›  专栏  ›  技术社区  ›  hbak

在递归中引发异常

  •  1
  • hbak  · 技术社区  · 6 年前

    我试图解决这个问题:

    设计一个算法并编写代码来寻找第一个共同祖先 数据结构。注意:这不一定是二叉搜索树。

    我为下面的解决方案编写了一个伪代码。共同祖先的左右子树必须包含以下两个值:

          Node ans;
          //These are the target values/nodes (In case of values, I am assuming the are unique, no repeated values)
         Value targetValue1,targetValue2;
         Boolean checkExistance(Node n, Value v, Value q){
              if n == null 
                      return false;
              elif n.value == v || n.value == q
                      return true;
    
              checkLeft = checkExistance(n.left,targetValue1,targetValue1);
              checkRight = checkExistance(n.right,targetValue1,targetValue1);
    
              if checkLeft == checkRight == false
                      return false;
              elif checkLeft == checkRight == true
                      ans = n;
                      thow new Excpetion("Common Ancestor was Found");
              //it contains one of the node 
              return true;
           }
    

    我相信异常将释放堆栈并避免不必要的递归调用。我的问题是这是一个很好的实践,有没有机会通过不使用讨厌的异常来改进这个解决方案?

    0 回复  |  直到 6 年前