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サーバーになるための勇気と戦略

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

ブログ    
ブログ    

推薦する

シングルトランスフォーマー情報検索、Google は微分可能な検索インデックスでデュアルエンコーダーモデルに勝利

情報検索 (IR) は、インターネットの誕生以来、揺るぎない地位を築いてきました。膨大なデータからユ...

ゼロから学ぶPythonによるディープラーニング!

人工知能は現在、飛躍的に成長しています。たとえば、自動運転車は時速数百万マイルで走行し、IBM Wa...

...

百度研究所が2020年のAI技術トレンド予測トップ10を発表

一歩前進、そしてまた一歩前進し、2019年が終わりました。 12月24日、百度研究所は2020年のト...

EU、生成AIツールの規制について暫定合意に達する:これまでで最も包括的な規則

12月9日、ワシントンポスト紙やエンガジェットなどの海外メディアの報道によると、世界各国がAIの急速...

Googleはプライバシーポリシーを更新し、インターネット上の公開情報をAIモデルのトレーニングに利用することを許可した。

検索エンジン大手のGoogleは7月4日、プライバシーポリシーを更新し、インターネット上の公開情報を...

2021年の10のAIトレンド

[[361168]] IDCは2019年9月の時点で、2023年までに人工知能技術への支出が3倍以上...

百度グループ副社長ウー・ティエン氏:文心ビッグモデル3.5は機能面でChatGPT3.5を上回った

7月19日、「新バージョンの文心易言の性能はChatGPT 3.5を上回り、これは我が国の関連技術作...

...

シリコンバレーの天才たちの没落: 才能から始まり、利益に転落し、「賢さ」のせいで失敗した

若い才能、輝かしい経歴、上司からの評価、順調なキャリア、明るい未来...これらは、2016 年初頭に...

グラフニューラルネットワークに基づくOPPOの検索推奨アルゴリズムと実践

1. グラフニューラルネットワーク入門グラフ ニューラル ネットワークについて説明する前に、まずグラ...

Web攻撃検出のための機械学習の深層実践

1. 概要1. 従来のWAFの問題点従来の WAF は、ルールとブラックリストおよびホワイトリストに...

マイクロソフト:Office は将来 AI を統合し、Microsoft Teams を追加する予定

マイクロソフトは、有名なOfficeに大きな変更を加え始めました。5年間使用されてきたOfficeア...

ディープラーニングのコードを信頼できるのはなぜでしょうか?

ディープラーニングは、正確性を評価するのが難しい分野です。ランダムな初期化、膨大なデータセット、重み...