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

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

ブログ    
ブログ    
ブログ    

推薦する

XML暗号化アルゴリズムが破られ、W3CはXML暗号化標準を改訂する必要がある

ルール研究所の研究者らは、XML 暗号化プロトコルに重大なセキュリティ上の脆弱性を発見し、シカゴで開...

K2 K2、上海交通大学チームが70億パラメータの地球科学言語モデルを発表

地球科学は、岩石、鉱物、土地の特性を研究するだけでなく、地球の気候、海洋、大気、生態系などの現象と原...

iOS 18 の新機能がついに公開されました!

今年は生成AI技術が大変人気です。ChatGPTの登場以来、多くの大規模な生成AIモデルが雨後の筍の...

...

クラシック絵文字パッケージにこの「続編」があることが判明しました。ステーブルビデオのクリエイティブなゲームプレイが人気

AI を使って古典的な絵文字を動画にアップグレードする、この創造的な遊び方が最近かなり人気になってい...

...

...

MITの最新の成果:AIが人間の脳が言語を処理する仕組みを解明

最新世代の予測言語モデルは、言語の根底にある意味の一部も学習したようです。驚くべきことに、これらのモ...

...

今のところ人工知能があなたの仕事を奪うことはないが、すでにあなたの履歴書に載っている

[[387879]] AI、つまり人工知能は、最近誰もが口にする言葉になっているようです。私はこのテ...

畳み込みニューラル ネットワークの設計を始めたいですか?これは包括的なデザインガイドです

画像分類を始めたいが、どこから始めればよいか分からない。どの事前トレーニング済みネットワークを使用す...

才能の「脳」が人的資本管理の変化を解き放つ

黄金の3月と銀の4月の採用シーズンが再び到来しました。 [[324006]]疫病の影響を受け、キャン...

これら15のアルゴリズムをマスターすれば、グラフデータベースNeo4jを操作できるようになります。

チャート分析はビジネス上の意思決定において非常に価値があり、優れたグラフ アルゴリズムは使いやすく実...