データ構造 - リスト進数表記

パブリッククラスBinaryTreeNode { 
	プライベートintデータ; //数据
	プライベートBinaryTreeNode leftChild; //左孩子
	プライベートBinaryTreeNode rightChild; //右孩子
	
	公共int型のgetData(){ 
		戻り値のデータ。
	} 
	
	公共ボイドのsetData(intデータ){ 
		this.data =データ。
	} 
	
	公共BinaryTreeNode getLeftChild(){ 
		リターンleftChild。
	} 
	
	公共ボイドsetLeftChild(BinaryTreeNode leftChirld){ 
		this.leftChild = leftChirld。
	} 
	
	公共BinaryTreeNode getRightChild(){ 
		リターンrightChild。
	} 
	
	公共ボイドsetRightChild(BinaryTreeNode rightChild){ 
		this.rightChild = rightChild。
	} 
	
}

  

 

BinaryTreeクラス{パブリック
	
	プライベートBinaryTreeNodeルート、
	
	公共BinaryTree(BinaryTreeNodeルート){ 
		this.root =ルート; 
	} 
	
	公共ボイドsetRoot(BinaryTreeNodeルート){ 
		this.root =ルート; 
	} 
	
	公共BinaryTreeNode getRoot(){ 
		;ルートを返す
	} 
	
	/ ** 
     *クリア二分木:
     *各ノードは両方の再帰的削除、部分木法のルートノードとしてノードに第1のクリアを提供する工程; 
     *ツリーを削除し、次いで第一の方法でルートノードを削除する方法を提供
     * / 
	//すべてのノードのサブツリークリアし
	ます。public voidクリア(BinaryTreeNodeノード){ 
		IF(!ノード= null)を{ 
			;クリア(node.getLeftChild())
			をクリア(node.getRightChild()); 
			ノード= NULL ; //ノードを削除
		} 
	} 
	
	//空の木
	{クリアパブリック()無効 
     ノード1 *必要なノードの数は、我々は、ノードのサブツリーを得るために見ると数字を達成。
		クリア(ルート); 
	} 
	
	//バイナリツリーが空であるか否かを判断する
	パブリックブールのisEmpty()は{ 
		ルートを返す== NULL; 
	} 
	
	//は、サブツリー内のノードの高さを取得する
	パブリックINT HEIGH(BinaryTreeNodeノード){ 
		(ノード== IF NULL){ 
			0を返す; //再帰端、空の木の高さ0 
		}他{ 
			//再帰取得左サブツリー高
			INT Lを= HEIGH(node.getLeftChild()); 
			//右サブツリーを再帰的に取得高
			INT R = HEIGH(node.getRightChild()); 
			//(彼らはこの層の数を所有したいので1 +)の高さは、高い側考慮すべき
			リターンL> R(L + 1):( R + 1);?
		} 
		
	} 
	
	公共INT HEIGH(){ 
		HEIGH(ルート)を返す; 
	} 
	
	/ ** 
     ノードの*バイナリツリーを:
     *前記第1のノードが肯定0の数は、空である。
     * 3空でない場合には、カウントこのノードの後に左と右のサブツリーの再帰的にすべての子ノード、
     * 4は、すべてのノードの指定された数に追加されるサブツリーのルートノードである
     * 5ノードのバイナリツリーは、ルートノードであれば入力する
     * / 
	公共int型のサイズ(BinaryTreeNodeノード){ 
		IF(ノード== NULL){ 
			戻り0; //ノードが空である場合、0のノードに戻り
		}他{ 
			//計算ノードので+1に
            //は再帰的に最終の追加、サブツリー右サブツリーのノードとノードを残して取得
			。+サイズ1つのリターン(node.getLeftChild())+サイズ(node.getRightChild()); 
		} 
		
	} 
	
	//バイナリツリーのノードの数取得
	公共int型のサイズ(){ 
		戻りサイズ(ルート); 
	} 
	
	父ノードを返す//ノード
	//ノードのサブツリー・ノードのサブツリーの親
	パブリックBinaryTreeNodeのgetParent(BinaryTreeNodeサブツリーBinaryTreeNodeノード){ 
		////ツリーが空の場合(サブツリー== NULL)が{親ノードが存在しない場合
			、戻りNULL; 
		}
		//サブツリーのルートの周りに子供の一つは、未知の起源のノード、サブツリー戻りのルートである場合、 
		(node.getLeftChildを返します)。
		IF(subTree.getLeftChild()== subTree.getRightChildノード||()==ノード){ 
			戻りサブツリー; 
		} 
		BinaryTreeNode親= NULL; 
		IF {(のgetParent(subTree.getLeftChild()、ノード)= NULL!)
			親= getParent(subTree.getLeftChild()、ノード); 
			戻り親; 
		}他{ 
			//再帰左サブツリーの
			リターンのgetParent(subTree.getRightChild()、ノード); 
		} 
	} 
	
	//バイナリツリーノードにノードの親ノードを検索
	公共BinaryTreeNode getParent(BinaryTreeNodeノード){ 
		リターン(ルート== == NULL ||ルートノード)ヌル:?のgetParent(ルートノード); 
	} 
	
	左サブツリー戻す// 
	パブリックBinaryTreeNode getLeftTree(BinaryTreeNodeノード){ 
	} 
	
	右の子を返す//をツリー 
	パブリックBinaryTreeNode getRightTree(BinaryTreeNodeノード){ 
		node.getRightChild()を返す; 
	} 
	
	/ ** 
	 *バイナリツリーに挿入されている:
	 * 2例:ノードの左の子ノードの挿入、ノードの右の子ノードに
	 *価値これは、自ノードが子ノードを有する場合、そのような挿入がこの位置に前のノードを上書きすることに留意しました。
	 *加えて、子ノードが挿入されているが、しかしまた、子ノードのサブツリーを表すことができます。
	 *ただし、これはノードが挿入されているもののので、サブツリーの存在については、このノードのノードかどうかを知るようには見えないが、多くのノード(サブツリーの挿入)を挿入することが可能である
	 * / 
	
	//ノードを挿入します左ノード
	公共ボイドinsertLeft(BinaryTreeNode親、BinaryTreeNode newNode){ 
		parent.setLeftChild(newNodeが); 
	} 
	//ノードの右ノードに挿入し
	ます。public void insertRight(BinaryTreeNode親、BinaryTreeNode newNode){ 
		parent.setRightChild(newNode); 
	} 
	
	/ /予約限定!
	無効(BinaryTreeNodeノード){予約限定公共
        IF(ノード= nullを!){ 
            System.out.printlnは(node.getData()); //最初のルートアクセス
            予約限定(node.getLeftChild()); //最初トラバーサルを残しましたサブツリー
            予約限定(node.getRightChild()); //右のサブツリー最初の先行順走査
        } 
    } 
	
	//行きがけ
	ます。public void INORDER(BinaryTreeNodeノード){ 
        IF(!ノード= NULL){ 
            INORDER(node.getLeftChild()) ; //左サブツリーのルート横断
            するSystem.out.println(ノード); //ルートアクセス
            順序どおり(node.getRightChild()); //右サブツリーのルート横断
        } 
    } 
	
	//後順
	公共ボイド後順(BinaryTreeNodeノード){ 
        IF(ノード!= NULL){
            後順(node.getLeftChild()); //左サブツリーのルート横断後 
            後順を(node.getRightChild()); //右部分木トラバーサル
            System.out.println(ノード); //アクセスルート
        } 
    } 
	
}

  

おすすめ

転載: www.cnblogs.com/wgblog-code/p/11226434.html