タグ付けされた質問 「binary-trees」

各ノードが2つ以下の子を持つツリー

2
バイナリツリーの証明には、最大で葉があります
ノードを持つ二分木が最大で葉を持っていることを証明しようとしています。誘導でこれを行うにはどうすればよいですか?nnn⌈ n個2⌉⌈n2⌉\left\lceil \frac{n}{2} \right\rceil ヒープに関する最初の質問でフォローしていた人々のために、それはここに移動されました。

2
BSTでの検索時に可能な検索パスの数
次の質問がありますが、答えはありません。私の方法が正しいかどうか私は感謝します: Q.バイナリサーチツリーでキー値60を検索すると、キー値10、20、40、50、70、80、90を含むノードが、必ずしも指定された順序で移動されるわけではありません。これらのキー値が、値60を含むルートノードからの検索パスで発生する可能性のある順序はいくつありますか? (A)35(B)64(C)128(D)5040 質問から、与えられたすべてのノードをトラバーサルに含める必要があり、最終的にキー60に到達する必要があることを理解しています。たとえば、そのような組み合わせの1つは次のようになります。 10、20、40、50、90、80、70、60。 上記のすべてのノードをトラバースする必要があるため、10または90から開始する必要があります。20から開始すると、10に到達しません(60> 20であり、20の右サブツリーをトラバースするため)。 同様に、80から始めることはできません。90に到達できないためです。80> 60なので、80の左のサブツリーをトラバースし、90に到達しません。 残りのノードは20、40、50、70、80、90です。次のノードは20または90のいずれかです。前述の同じ理由で他のノードを取得することはできません。 同様に考えると、各レベルで2つの選択肢があります。ノードは7つあるため、最初の6つには2つの選択肢があり、最後の1つには選択肢がありません。だから完全にあります 2∗2∗2∗2∗2∗2∗12∗2∗2∗2∗2∗2∗12*2*2*2*2*2*1順列= = 6426262^6646464 これは正解ですか? そうでない場合、より良いアプローチは何ですか? 一般化したいと思います。場合ノードが次に与えられる合計の可能な検索パスは次のようになり2 n − 1nnn2n−12n−12^{n-1}

4
2つの異なるツリーの予約注文トラバーサルは、たとえ異なっていても同じですか?
この質問は、それらが可能であることをかなり説明していますが、同じプレオーダートラバーサルを持つ2つの異なるツリーがある例は示していません。 また、構造的には異なりますが、2つの異なるツリーの順序トラバーサルは同じでもかまいません。この例はありますか?

1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

2
どのようにして、0と1の数が等しいすべてのバイナリシーケンスを効率的に生成しますか?
バイナリシーケンスの長さだけ順序付けられたシーケンスである各ようにのいずれかであるまたは。このようなすべてのバイナリシーケンスを生成するには、次の方法で明らかなバイナリツリー構造を使用できます。ルートは「空」ですが、左の子はそれぞれ既存の文字列にを追加し、右の子を追加し。ここで、各バイナリシーケンスは、ルートで始まり、リーフで終わる長さパスです。x 1、… 、x n x j 0 1 0 1 n + 1nnnx1,…,xnx1,…,xnx_1,\ldots,x_nxjxjx_j000111000111n+1n+1n+1 これが私の質問です: 正確にゼロと 1 を持つ、長さすべてのバイナリ文字列のみを生成したい場合は、もっと良いことはありますか?n n2n2n2nnnnnnn 「もっと上手くできるか」ということは、最初に上のツリー全体を構築し、次に「左」と「右」のエッジの数が等しいパスを見つけようとする愚かなアルゴリズムよりも複雑さを低くする必要があることを意味します。

2
二分木の平均高さはどれくらいですか?
二分木の平均高さについて正式な定義はありますか? 次の2つの方法を使用してバイナリツリーの平均の高さを見つけることに関するチュートリアルの質問があります。 自然な解決策は、ルートからリーフへのすべての可能なパスの平均の長さを取ることです。 。avh1(T)=1# leaves in T⋅∑v leaf of Tdepth(v)avh1⁡(T)=1# leaves in T⋅∑v leaf of Tdepth⁡(v)\qquad \displaystyle \operatorname{avh}_1(T) = \frac{1}{\text{# leaves in } T} \cdot \sum_{v \text{ leaf of } T} \operatorname{depth}(v) 別のオプションは、再帰的に定義することです。つまり、ノードの平均の高さは、サブツリーの平均の高さの平均に1を加えたものです。つまり、 avh2(N(l,r))=avh2(l)+avh2(r)2+1avh2⁡(N(l,r))=avh2⁡(l)+avh2⁡(r)2+1\qquad \displaystyle \operatorname{avh}_2(N(l,r)) = \frac{\operatorname{avh}_2(l) + \operatorname{avh}_2(r)}{2} + 1 リーフのためのL及びAVH 2(_ )= 0空きスロット用。avh2(l)=1avh2⁡(l)=1\operatorname{avh}_2(l) = 1lllavh2(_)=0avh2⁡(_)=0\operatorname{avh}_2(\_) = 0 …


1
範囲更新+バイナリインデックスツリーを使用した範囲クエリ
範囲のクエリと範囲の更新の両方を処理するためにバイナリインデックス付きツリー(fenwickツリー)をどのように変更できるかを理解しようとしています。 次のソースを見つけました: http://kartikkukreja.wordpress.com/2013/12/02/range-updates-with-bit-fenwick-tree/ http://programmingcontests.quora.com/Tutorial-Range-Updates-in-Fenwick-Tree http ://apps.topcoder.com/forums/?module = Thread&threadID = 756271&start = 0&mc = 4#1579597 しかし、それらすべてを読んでも、2番目のバイナリインデックス付きツリーの目的や、それが何をするのか理解できませんでした。 誰かがバイナリインデックス付きツリーがこれらを処理するためにどのように変更されるかを私に説明してもらえますか?

3
バイナリツリーの最小の高さなぜですか?
私のJavaクラスでは、さまざまなタイプのコレクションの複雑さについて学習しています。 間もなく、私が読んでいる二分木について議論します。この本は、二分木の最小の高さはであると述べていますが、それ以上の説明はありません。log2(n+1)−1ログ2⁡(ん+1)−1\log_2(n+1) - 1 誰かが理由を説明できますか?

1
回転数が奇数のスプレーツリー
アイテムをスプレイツリーに挿入すると、回転はジグザ​​グまたはジグジグパターンに基づいてペアで実行されます。実行するローテーションの数が奇数の場合、リーフから開始する追加のローテーションを実行するか、追加のローテーションを保存してルートで実行することができます。それは重要ですか? たとえば、添付された画像では、4をBSTに挿入し、それをルートに「展開」します。図の上部で、最初にリーフノードにジグザグペアを配置し、下部からジグザグスプレーを実行して、ルートに最後の右回転を残します。図の下部では、最初に葉から奇数回転を行い、次にルートまでジグザグに広げます。 どちらが正しい?または、両方とも通常のスプレイツリーパフォーマンスにつながりますか?

3
対数対二重対数時間の複雑さ
使用する際に実際のアプリケーションでは、具体的な利点がありますの代わりにO(ログ(N ))のアルゴリズム?O(ログ(ログ( n ))O(ログ⁡(ログ⁡(ん))\mathcal{O}(\log(\log(n))O(ログ(n ))O(ログ⁡(ん))\mathcal{O}(\log(n)) これは、従来の二分探索木実装の代わりに、たとえばvan Emde Boas木を使用する場合です。ただし、たとえば、場合、最良の場合、対数アルゴリズムは対数アルゴリズムよりも(約)5倍優れています。また、一般的に、実装はよりトリッキーで複雑です。n &lt; 106ん&lt;106n < 10^6555 私が個人的にVEBツリーよりもBSTを好むとすれば、どう思いますか? 簡単にそれを示すことができます: ∀ N &lt; 106。ログ んログ(ログ( n ))&lt; 5.26146∀ん&lt;106。 ログ⁡んログ⁡(ログ⁡(ん))&lt;5.26146\qquad \displaystyle \forall n < 10^6.\ \frac{\log n}{\log(\log(n))} < 5.26146


3
二分探索木の「ランク」とは何ですか、またどのように役立ちますか?
ランク付けされた二分探索木とは何か、なぜランク付けが重要なのかについて、ちょっと心に納得できません。誰かが私のためにいくつかのことを明確にしてくれることを期待しています。 調べた内容: 私が読んだことから、ランク付けされた二分探索木は、各ノードに変数「ランク」が付加されているツリーです。 ここでの質問では、誰かが二分探索木のノードのランクを決定するために次のことができると述べています: ランクをゼロから始めます。バイナリ検索がルートから下に進んでいくときに、検索がスキップするすべての左側のサブツリーのサイズを合計します。また、検索されたアイテムよりも小さいパスに沿ったノードも含めます。これらは、検索パス上の正しい子の親にすぎません。 質問: ランクは、ツリー内の特定のノードに到達するために必要なノードの数(ルートの場合は1つ)を反映する単なる数値のようです。そうですか?それだけではノードのランクがノードの深さと同じになるだけのように思われるので、それは私には正しくないと思われました。 また、「重量」と「ランク」の違いは何ですか?特定のバイナリ検索ツリーのノードに重みが付けられている場合、それはユーザー/開発者によってランダムな値が割り当てられているだけですか? 最後に、ランクを付ける意味は何ですか?私の最初の考えは、優先順位を示すために使用できるということです。しかし、その場合、開発者はなぜウェイトを使用しないのですか? その他:ここ のサイトも確認しました。ランクの計算方法を説明していますが、まだ概念が理解できていません。 助けてくれてありがとう。

2
指定された高さのすべてのバイナリツリーをリストするアルゴリズム
私は与えられた高さのすべての二分木をリストするアルゴリズムを見つけようとしました hhh。 私はそれらを数えようとしているわけではないことに注意してください:そのような木の数はOEIS(A001699)で与えられています。 私が見ることができたすべてのアルゴリズムは、指定された数のノードのすべてのバイナリツリーをリストします。問題を解決する非常に非効率的な方法は、間にいくつかのノードを持つすべてのツリーをチェックすることによって続行されますh + 1h+1h+1 そして 2h + 1− 12h+1−12^{h+1}-1、しかしこれはまったく素晴らしいことではありません。 ポインタや参照は大歓迎です。

1
ハフマンコードVS Hu–Tuckerコード
質問する前に、定義の理解から始めて、混乱を避けるために、背景を説明します。 ハフマンコードは、ハフマンのアルゴリズムによって構築されたバイナリツリーから誘導されたバイナリコードです。 Hu–Tucker Codeは、アルファベット順の検索ツリーから生成されたバイナリコードです。ウィキペディアに よると(最適なアルファベットの二分木(Hu–Tuckerコーディング)の段落を参照): 標準のハフマンコーディング問題では、任意のコードワードが任意の入力シンボルに対応できると想定されています。アルファベットバージョンでは、入力と出力のアルファベット順は同じでなければなりません。したがって、たとえば、はコード割り当てることができませんでした。ただし、代わりにまたは A = { a 、b 、c }あ={a、b、c}A = \left\{a,b,c\right\}H(A 、C) = { 00 、1 、01 }H(あ、C)={00、1、01}H\left(A,C\right) = \left\{00,1,01\right\}H(A 、C) = { 00 、01 、1 }H(あ、C)={00、01、1}H\left(A,C\right) =\left\{00,01,1\right\}H(A 、C) = { 0 、10 、11 }H(あ、C)={0、10、11}H\left(A,C\right) = \left\{0,10,11\right\}。これはHu–Tucker問題としても知られています。TCHuおよびAlan Tuckerの後に、この最適なバイナリアルファベット問題の最初の線形解を提示する論文の著者は、ハフマンアルゴリズムといくつかの類似点を持っていますが、これのバリエーションではありませんアルゴリズム。これらの最適なアルファベット二分木は、二分探索木としてよく使用されます。 私の質問は、そのような木の用途は何ですか?(アルファベットのバイナリツリー) オンラインで検索しようとしましたが、満足のいく答えが見つかりませんでした。 私はHu&Tuckerの論文の主題に関する紹介も読みました: Optimal Computer Search TreesとVariable-Length Alphabetical …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.