javaの実装-バイナリツリーのデータ構造(2つ):バイナリツリーの順次ストレージ

バイナリツリーのデータ構造(2つ):バイナリツリーの順次保存

概念:
データストレージの観点から、バイナリツリーのシーケンシャルストレージとは、アレイストレージ方式とツリーストレージ方式を相互に変換できること、つまり、アレイをツリーに変換できること、およびツリーをアレイに変換できることを意味します。
たとえば、次の図:(
ここに写真の説明を挿入
通常、順次バイナリツリーは完全なバイナリツリーのみを考慮します)
上の図から、配列の添え字がツリーノードの番号に対応していることがわかります。バイナリツリーのn番目のノードの
左側のサブツリーのノード番号は2n + 1

、バイナリツリーのn番目のノードの右側のサブツリーのノード番号は2 n + 2、バイナリツリーのn番目のノードの親ノードのノード番号(n-1)/ 2です。

配列をバイナリツリーに変換する簡単な実装:

public class ArrayBinaryTreeDemo {
    
    
	public static void main(String[] args) {
    
    
		int arr[]= {
    
    1,2,3,4,5,6,7};
		ArrayBinaryTree abTree=new ArrayBinaryTree(arr);
		abTree.preShow(0);
	}
}

class ArrayBinaryTree{
    
    
	int arr[];
	public ArrayBinaryTree(int arr[]) {
    
    
		this.arr=arr;
	}
	
	//将数组转换为树后的前序遍历,index为数组下标
	public void preShow(int index) {
    
    
		if(arr==null||arr.length==0) {
    
    
			System.out.println("数组为空,转换树失败");
		}
		System.out.println(arr[index]);
		if((2*index+1)<arr.length) {
    
    
			preShow(2*index+1);
		}
		if((2*index+2)<arr.length) {
    
    
			preShow(2*index+2);
		}
	}
}

プレオーダートラバーサル結果の出力:
ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/qq_45273552/article/details/109080102