Java プログラミング スキル - データ構造とアルゴリズム「シーケンシャル バイナリ ツリー」

Java プログラミング スキル - データ構造とアルゴリズム「シーケンシャル バイナリ ツリー」

基本概念

データストレージの観点から見ると、配列ストレージとツリーストレージは相互に変換できます。つまり、配列をツリーに変換したり、ツリーを配列に変換したりできます。次の図に示すように:


順次記憶バイナリツリーの特性:

  1. 順次ストレージでは通常、完全なバイナリ ツリーのみが考慮されます。
  2. n 番目の要素の左の子ノードは 2 * n+1 です。
  3. n 番目の要素の右の子ノードは 2 * n + 2 です。
  4. n番目の要素の親ノードは(n-1)/2です。
  5. n はバイナリ ツリー内の要素数を表します (上の図に示すように、番号は 0 から始まります)。

必要

配列{1,2,3,4,5,6,7}が与えられた場合、二分木の順序順走査の方法で走査する必要があります。順序順走査の結果は1,2,4,5,3,6,7、

さらに、インオーダー トラバーサルとポストオーダー トラバーサルを完了します。

コード例

  1. パッケージ com.xie.tree;
  2.  
  3. /**
  4. * @著者: xiexiaofei
  5. * @日付: 2020-02-09 20:04
  6. * @説明:
  7. */
  8. パブリッククラス ArrBinaryTreeDemo {
  9. 公共 静的void main(String[] args) {
  10. int [] arr = {1, 2, 3, 4, 5, 6, 7};
  11. ArrBinaryTree は、arr という名前のバイナリツリーを作成します。
  12. System. out .println( "順番に格納されたバイナリツリーの事前順序トラバーサル配列" );
  13. arrBinaryTree.preOrder(0);
  14. System.out.println( ) ;
  15. System.out.println ( "バイナリツリーを順番に格納する順序走査配列" );
  16. バイナリツリーの順序を0に変更します。
  17. System.out.println( ) ;
  18. System. out .println( "バイナリツリーを順番に格納する後順トラバーサル配列" );
  19. arrBinaryTree.postOrder(0);
  20. System.out.println( ) ;
  21.  
  22. /**
  23. * バイナリツリーの事前順序走査配列を順番に格納する
  24. * 1 2 4 5 3 6 7
  25. * バイナリツリーの順序付き走査配列を順番に格納する
  26. * 2 4 5 1 3 6 7
  27. * バイナリツリーのポストオーダートラバーサル配列を順番に格納する
  28. * 2 4 5 3 6 7 1
  29. */
  30.  
  31. }
  32. }
  33.  
  34. //順次ストレージバイナリツリーのトラバーサルを実装する
  35. クラス ArrBinaryTree {
  36. private int [] arr; //データノードを格納する配列
  37.  
  38. パブリックArrBinaryTree( int [] arr) {
  39. this.arr = arr;
  40. }
  41.  
  42. /**
  43. * 順番に格納されたバイナリツリーの事前順序走査を完了するメソッドを記述します。
  44. *
  45. * @paramインデックス配列の添え字
  46. */
  47. パブリックvoid preOrder( int  索引) {
  48. (arr == null || arr.length == 0)の場合{
  49. System.out.println ( "配列は空なので、バイナリツリーの事前順序で走査することはできません" );
  50. }
  51. // 現在の要素を出力する
  52. システム.out.print (arr[インデックス]+ "" );
  53. //左への再帰的トラバーサル
  54. ((2 *インデックス+ 1) < arr.length) の場合 {
  55. preOrder(2 *インデックス+ 1);
  56. }
  57. //右方向への再帰
  58. ((2 *インデックス+ 2) < arr.length) の場合 {
  59. preOrder(2 *インデックス+ 2);
  60. }
  61. }
  62.  
  63. /**
  64. * 順番に格納されたバイナリツリーの順序どおりのトラバーサルを完了するメソッドを記述します。
  65. *
  66. * @paramインデックス 
  67. */
  68. パブリックvoid infixOrder( int  索引) {
  69. (arr == null || arr.length == 0)の場合{
  70. System.out.println ( "配列は空なので、バイナリツリーの事前順序で走査することはできません" );
  71. }
  72.  
  73. //左への再帰的トラバーサル
  74. ((2 *インデックス+ 1) < arr.length) の場合 {
  75. preOrder(2 *インデックス+ 1);
  76. }
  77.  
  78. // 現在の要素を出力する
  79. システム.out.print (arr[インデックス]+ "" );
  80.  
  81. //右方向への再帰
  82. ((2 *インデックス+ 2) < arr.length) の場合 {
  83. preOrder(2 *インデックス+ 2);
  84. }
  85.  
  86. }
  87.  
  88. /**
  89. * 順番に格納されたバイナリツリーの事後順序トラバーサルを完了するメソッドを記述します。
  90. *
  91. * @paramインデックス 
  92. */
  93. パブリックvoid postOrder( int  索引) {
  94. (arr == null || arr.length == 0)の場合{
  95. System.out.println ( "配列は空なので、バイナリツリーの事前順序で走査することはできません" );
  96. }
  97.  
  98. //左への再帰的トラバーサル
  99. ((2 *インデックス+ 1) < arr.length) の場合 {
  100. preOrder(2 *インデックス+ 1);
  101. }
  102.  
  103. //右方向への再帰
  104. ((2 *インデックス+ 2) < arr.length) の場合 {
  105. preOrder(2 *インデックス+ 2);
  106. }
  107.  
  108. // 現在の要素を出力する
  109. システム.out.print (arr[インデックス]+ "" );
  110.  
  111. }
  112.  
  113. }

【編集者のおすすめ】

  1. K8S の基本的なアーキテクチャ概念とネットワーク モデルを理解するのに役立つ 5 分
  2. 1992 年に Baidu のプログラマーが逮捕されたことは、私たちにどのような警告を与えているのでしょうか。
  3. オープンソースのクラウドディスクツール: Nextcloud 21 プライベートクラウドディスク構築
  4. よりクリーンなMicrosoft Windows 10 21H2メジャーアップデートにより、システム内の肥大化したソフトウェアの数が削減されます
  5. 996 作業システムは良いのか悪いのか?

<<:  世界一のAIサーバーになるための勇気と戦略

>>:  人工知能は人間の文化を継承するが、人間の偏見も受け継いでいる

推薦する

研究者たちは建設における人工知能の利用を研究している

過去数十年にわたり、AI ツールは、コンピューター サイエンスから製造、医学、物理学、生物学、さらに...

ホテル業界が人工知能と機械学習を活用して利益を最大化する方法

最近、テクノロジーが私たちを支配していることに疑いの余地はありません。 COVID-19のパンデミッ...

2019年に注目すべき5つのAIトレンド

2018 年には、機械学習と人工知能に基づくプラットフォーム、ツール、アプリケーションの劇的な成長が...

...

...

機械学習とディープラーニング、この2つの違いは何でしょうか?

[51CTO.com クイック翻訳] 機械学習とディープラーニング - 両者の類似点と相違点。人工...

インベントリ | 知らないかもしれないディープラーニングの応用事例 8 つ

ディープラーニングは、多層人工ニューラル ネットワークを使用してコンピューター ビジョンから自然言語...

...

英国、今年末までに無人運転車の公道走行を許可へ

4月29日、外国メディアの報道によると、英国運輸省は水曜日、自動車線維持システム(ALK)を搭載した...

AIがあなたをビデオから消去しました!効果はシルキーで跡が残りません

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

コンピュータービジョンにおける次の大きな進歩はどこから生まれるのでしょうか?

翻訳者 | ブガッティレビュー | Chonglou 1950 年代のコンピューター ビジョンの最初...

AI チャットボットと自動テストの重要性

近年、銀行、医療、小売、通信などの業界でチャットボットの使用が大幅に増加しています。これにより、私た...

...

マイクロソフトはIBMとアマゾンに続き、警察への顔認識技術の販売を拒否

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

オイラー誕生!中国初の産業グレードのグラフディープラーニングオープンソースフレームワーク

[[255980]]ついに待望の登場です! Alibaba は、主要なオープンソース プロジェクトで...