找到二叉树中的最低叶子

时间:2015-03-26 06:01:43

标签: c++ c binary-tree

我正在尝试比较所有叶子以返回树的最低值,我没有main函数只是一个脚本来插入值,所以很遗憾我无法调试它。

tpNoArvore * findLowest(tpNoArvore * pNo){
   tpNoArvore * left;
   tpNoArvore * right;
   tpNoArvore * res;

   if (!pNo) return NULL; /* if */

   left = findLowest(pNo->pNoL);
   right = findLowest(pNo->pNoR);
   if(isLeaf(pNo))
      return pNo;
   }  /* if */

   if(!left){
      return right;
   } /* if */

   if(!right){
      return left;
   } /* if */


    return (left->Valor < right->Valor) ? left : right ;

} 

所以,基本上我在这里想要实现的是比较每个节点的两边以找到最低点。

1 个答案:

答案 0 :(得分:1)

您的代码返回指针似乎很奇怪。我希望有类似的东西:

// Assume valor is int
int findLowest(tpNoArvore * pNo){

   if (!pNo) exit(1); /* fatal error */

   // If this is a leaf just return its value
   if(isLeaf(pNo)) return pNo->Valor;

   // Not a leaf

   // Find the lowest value in left part of tree
   int leftValor = findLowest(pNo->pNoL);

   // Find the lowest value in right part of tree
   int rightValor = findLowest(pNo->pNoR);

   // Return the lowest of leftValue ans rightValue
   return (leftValor < rightValor) ? leftValor : rightValor ;

} 

但也许我误解了你的问题。