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

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

ブログ    
ブログ    
ブログ    

推薦する

人工知能に関するこの記事を読むことで、90%の人を超えることができる

この記事はeasyAI - 人工知能ナレッジベースから転送されました目次人工知能に関する誤解人工知能...

サイボーグの時代が到来すると予想される:人間の体が機械に置き換えられる時代

ロボット工学ジャーナリストで専門家のクリス・ミドルトン氏は、早ければ2070年には私たちの体全体がロ...

Googleは、ニュースコンテンツを作成するために生成AIツールを使用するためにいくつかの出版社と提携していると報じられている。

2月28日、Adweekは、Googleがいくつかの出版社と、ニュースコンテンツを作成するための新...

...

クイックソートアルゴリズムの普及チュートリアル

[[121950]]多くは語りません。次に、この記事の主題であるソートアルゴリズムについて説明しまし...

自動運転技術が盛んに進歩していますが、実際に道路上で実用化されるまでにはどれくらい時間がかかるのでしょうか?

自動運転の概念は、誕生以来、常に資本家や技術起業家が好む分野のひとつでした。新しいインフラと5G商用...

...

...

...

Chen Danqi 氏のグループによるマスク言語モデルに関する研究: 15% のマスク率は最適ではないが、40% は維持可能か?

少し前に、スローン財団は2022年度スローン研究賞の受賞者を発表しました。Chen Danqi、Fa...

130 億個のパラメータを持つモデルをトレーニングするには GPU がいくつ必要ですか?マイクロソフト: 1つで十分

今日のモデルには数千億、あるいは数兆ものパラメータがあります。一般の人がモデルをトレーニングできない...

AIチップ業界は発展の初期段階にあり、将来的には大きな市場の可能性を秘めている

世界のPC業界が年々衰退し、スマートフォン市場が飽和状態に陥る中、ビッグデータ、クラウドコンピューテ...

...

「最強の7Bモデル」論文が発表され、ラマ2の13Bバージョンを超える方法が明らかになった

「欧州OpenAI」の「最強の7Bオープンソースモデル」であるMistralは、最近、数え切れないほ...

2024年のGenAIおよびその他の技術への投資の変化

この記事では、GenAI やその他のテクノロジーへの投資が 2024 年までにどのように変化するかに...