İkili bir ağaçta en kısa yolun toplamını döndürecek bir işlev uygulamaya çalışıyorum. Aşağıdaki ağaç için 4 yerine 8 yanlış cevap alıyorum. İkili bir ağaçta yaprak yoluna en kısa kök toplamını bul
int sumOfShortestPath(BinaryTreeNode *root, std::vector<int> vec) {
if(!root) return 0;
static int minPathLength = INT_MAX;
static int pathLength = 0;
static int sum = 0;
vec.push_back(root -> data);
pathLength++;
if(root -> left == NULL and root -> right == NULL) {
if(pathLength < minPathLength){
minPathLength = pathLength;
sum = sum_vector(vec);
pathLength = 0;
}
}
sumOfShortestPath(root -> left, vec);
sumOfShortestPath(root -> right, vec);
return sum;
}
1
/\
2 3
/\
4 5
benim mantık doğru olduğuna inanıyoruz ama ben yanlış nereye gidiyorum ben emin değilim. Temel olarak, daha küçük bir yolla karşılaşırsam,
minPathLength
ve
sum
'u güncelleştirir ve
pathLength
'u bir sonraki yol araştırması için 0'a döndürürüm.
Sorunu kağıt ve kurşun kalemle çözmeye çalışın. Ve bir hata ayıklayıcısının nasıl kullanılacağını öğrenmeye başlayın. –