二分木のプレオーダーミドルオーダーおよびポストオーダートラバーサル

トラバーサルの定義

特定の戦略によれば、バイナリツリーの各ノードは特定の順序でアクセスされるため、各ノードは1回だけアクセスされます。このプロセスは、二分木のトラバーサルと呼ばれます。
トラバーサルの結果は、バイナリツリーノードの線形シーケンスです。非線形構造の線形化。

戦略:左側の子ノードは、右側の子ノードの前にアクセスする必要があります

プレオーダー(ルート)は二分木を横断します

二分木が空の場合は戻り、そうでない場合は戻ります。

  • ①ルートノードにアクセスします。
  • ②最初にルートノードの左側のサブツリーをトラバースします。
  • ③最初にルートノードの右側のサブツリーをトラバースします。

結果として得られる線形シーケンスは、それぞれプレオーダー(ルート)シーケンスと呼ばれます。
ここに画像の説明を挿入
事前注文トラバーサルシーケンスは次のとおりです。ABDGCEF

二分木の中間(ルート)走査

二分木が空の場合は戻り、そうでない場合は戻ります。

  • ①ルートノードの左側のサブツリーをトラバースするため。
  • ②ルートノードにアクセスします。
  • ③ルートノードの右側のサブツリーをトラバースするため。

結果として得られる線形シーケンスは、それぞれ順序(ルート)シーケンスと呼ばれます。
ミドルオーダートラバーサルシーケンスは次のとおりです。DGBAECF

二分木のポストオーダー(ルート)トラバーサル

二分木が空の場合は戻り、そうでない場合は戻ります。

  • ①ルートノードの左側のサブツリーを次の順序でトラバースします。
  • ②ルートノードの右側のサブツリーを次の順序でトラバースします。
  • ③ルートノードにアクセスします。

結果として得られる線形シーケンスは、それぞれポストオーダー(ルート)シーケンスと呼ばれます。

ポストオーダートラバーサルシーケンスは次のとおりです。GDBEFCA

二分木の階層的(二次的)走査

二分木の最初のレベル(つまりルートノード)から始めて、レイヤーごとに上から下にトラバースします。同じレイヤーで、ノードは左から右の順序でアクセスされます。結果として得られる線形シーケンスは、それぞれシーケンスシーケンスと呼ばれます。
レイヤーシーケンストラバーサルシーケンスは次のとおりです。ABCDEFG

コード

//编写前序遍历的方法
	public void preOrder() {
    
    
		System.out.println(this); //先输出父结点
		//递归向左子树前序遍历
		if(this.left != null) {
    
    
			this.left.preOrder();
		}
		//递归向右子树前序遍历
		if(this.right != null) {
    
    
			this.right.preOrder();
		}
	}
	//中序遍历
	public void infixOrder() {
    
    
		
		//递归向左子树中序遍历
		if(this.left != null) {
    
    
			this.left.infixOrder();
		}
		//输出父结点
		System.out.println(this);
		//递归向右子树中序遍历
		if(this.right != null) {
    
    
			this.right.infixOrder();
		}
	}
	//后序遍历
	public void postOrder() {
    
    
		if(this.left != null) {
    
    
			this.left.postOrder();
		}
		if(this.right != null) {
    
    
			this.right.postOrder();
		}
		System.out.println(this);
	}
	

おすすめ

転載: blog.csdn.net/qq_41784749/article/details/113444377