-3
今日私はインタビューでこれを正しく実行したかどうか疑問に思っています。セットアップは今日インタビューで尋ねられました:バイナリツリー内の2つの要素の最も近い子孫を見つけよう
Node ClosestDescendent (Node root, Node left, Node right)
{
// ...
}
class Node
{
int val;
Node left;
Node right;
}
です。
5
/\
4 6
/\ \
2 3 7
val
S 2
と7
とleft
とright
ノードのClosestDesendant
のval
ため5
であろう、そしてval
S 2
と3
は4
をあろうとleft
とright
ノードのClosestDesendant
のval
。
私の実装では、私は
- は
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; }
、これが正しいと思ったんだけどでしたか?
- このSkeet認定はありますか?
- もっと良い解決策はありますか?
とあなたの質問脇けど...あなたは、[ヒラリークリントン](http://stackoverflow.com/users/6048670/hillary-クリントン)、[this]を知っている(http://meta.stackoverflow.com/questions/319809/what-is-the-policy-on-user-names-that-are-obvious-impersonators-of-actual-person )メタポスト? – Ian
が解決しているかどうかを確認しなくても、良い変数名とよく似たメソッドを使用して、自分のコードに約50%のコメントがあることに非常に関心があります。私はコードが「非常に不可欠」であり、私は個人的にはこのような問題に対するより機能的なアプローチを好みたいと考えていますが、私は部分的には、あなたが、テールコールの最適化があります。 – kai
'codenode = cornode.left;'これらのシンボルのどれも範囲内にはありません、あなたは 'curnode'のスペルを間違えたと思いますか? – kai