0

バイナリツリーの任意の2つのノード間の最大の違いを見つける方法について、以下のアルゴリズムの理解を手伝ってもらえますか?バイナリツリー内の任意の2つのノードの最大の違いを見つける方法

http://www.geeksforgeeks.org/maximum-difference-between-node-and-its-ancestor-in-binary-tree/

彼らは実際に私たちは最大の違い&ない分差をつけたいとき、左部分木と右のサブツリーから最小値を取得しようとしている理由を私は理解していませんよ。ですから、左から再帰的に最大差分を得るべきではありません&右のサブツリー&私たちの結果を計算するのにそれを使用しますか?

ありがとうございます!

+0

2ノードではありません。 AはBの祖先です。 – SashaMN

+0

2つのノードの最大の違いを見つけたい場合は、「最小」と「最大」を見つけるだけです。結果は 'maximum - minimum'になります。 – SashaMN

+0

ただし、最大値は最小値の祖先である必要があります。 @Tによる回答。下のClavarieは助けます。ありがとう。 –

答えて

0

最大の違いを見つけるには、最小値から最大値を差し引くだけで十分です。あなたが提供したリンクは、異なる問題のアルゴリズムを記述しています:|A-B|ここでAは祖先でBです。

0

いつものように、これを実行するにはいくつかの方法がありますが、geeksforgeeksが提示したものと同様に動作するかもしれませんが、実装するのは難しいようです。

現在のノードと他のノードの最大の差は、現在の値から現在のサブツリーの最小値を減算することによって得られます。これが、右と左のサブツリーの最小値をとっている理由です。これまでの最大差は、必要に応じて更新される参照ポインタに含まれています。

+0

入手しました。これは助けになりました。 –

関連する問題