-3
Sadece bugün mülakatta bunu doğru yapıp yapmadığımı merak ediyorum. Kurulum,Bir röportajda bugün sordu: Bir ikili ağaçtaki iki elementin en yakın torununu bulun
örn.
5
/\
4 6
/\ \
2 3 7
val
s 2
ve 7
ile left
ve right
düğüm ClosestDesendant
arasında val
için 5
olacaktır ve val
s 2
ve 3
4
olur ile left
ve right
düğüm ClosestDesendant
arasında val
.
Benim uygulanması ben
-
Node ClosestDescendent (Node root, Node left, Node right) { // assume left != right and both left and right are // nodes in the tree // figuring out which is the smaller and which is the bigger // simplifies logic later Node smaller, bigger; if (left.val < right.val) { smaller = left; bigger = right; } else { smaller = right; bigger = left; } // traverse tree towards both left and right // until the path diverges Node curnode = root; while (true) { if (curnode.val < smaller.val && curnode.val < bigger.val) { curnode = curnode.right; } else if (curnode.val > smaller.val && curnode.val > bigger.val) { codenode = cornode.left; } else // curnode.val >= smaller.val && curnode.val <= biger.val { break; } } return curnode; }
ve bu doğru mi merak ediyorum edildi?
- Bu Skeet sertifikalı mı?
- Daha iyi bir çözüm nedir?
konu dışı ve soru kenara ama ... sen, [Hillary Clinton,] (http://stackoverflow.com/users/6048670/hillary- clinton), bunun farkında [http://meta.stackoverflow.com/questions/319809/what-is-the-policy-on-user-names-that-are-obvious-impersonators-of-actual-person) meta gönderimi? – Ian
, çözümün işe yarayıp yaramadığını doğrulamaksızın, sizin için iyi değişken isimlere ve iyi-çarpanlı yöntemlere güvenmek yerine, kodunuzda yaklaşık% 50 yorumunuzun olması gerçeğiyle çok ilgileneceğim. Ayrıca, kodun “çok zorlayıcı” olduğunu ve kişisel olarak bu gibi bir soruna daha işlevsel bir yaklaşımı tercih ettiğimi de belirtmek isterim, ama sanırım kısmen kısır bir zorunluluk dilini kullanıyorsunuz. kuyruk arama optimizasyonu var. – kai
'codenode = cornode.left;' Bu simgelerin hiçbiri kapsam dahilinde değil, yalnızca 'curnode' kelimesini yanlış yazdığınızı var sayıyorum. – kai