在递归中引发异常

时间:2018-12-10 20:40:46

标签: algorithm exception

我正在尝试解决以下问题:

  

设计算法并编写代码以找到第一个共同祖先   二叉树中两个节点的数量。避免将其他节点存储在   数据结构。注意:这不一定是二进制搜索树。

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

      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 个答案:

没有答案