アルゴリズム - シーケンシャルバイナリツリー

パッケージcom.demo.calculate。

輸入android.app.Activity。
輸入android.os.Bundle; 
輸入android.view.View。

輸入com.demo.calculate.bean.BinaryTree。
輸入com.demo.calculate.bean.TreeNode。

パブリッククラスBinarySortATreectivityアクティビティを拡張{ 
    @Overrideは、
    ボイドのonCreate(バンドルsavedInstanceState){保護
        super.onCreate(savedInstanceState)を、
        setContentView(R.layout.activity_binary_sort_tree)。
        findViewById(R.id.btn_binarySortTree).setOnClickListener(新しいView.OnClickListener(){ 
            @Override 
            ます。public void onClickの(ビューV){ 
                createTree(); 
            } 
        }); 
    }
 
    プライベートボイドcreateTree(){ 
        BinaryTree binaryTree =新しいBinaryTree()。
        INT [] ARR =新しいINT [] {7,3,5,9,12,45,23,10}。
        以下のために(INT i = 0; I <arr.length; iは++){ 
            binaryTree.add(新しいツリーノード(ARR [I]))。
        } 
        binaryTree.midShow()。
    } 
}

 

パッケージcom.demo.calculate.bean。

パブリッククラスBinaryTree { 
    プライベートint型の値。
    民間のTreeNodeルート; 
    公共INTのgetValue(){ 
        戻り値。
    } 

    公共ボイドのsetValue(int値){ 
        this.value =値。
    } 

    公共のTreeNode getRoot(){ 
        戻りルート。
    } 

    公共ボイドsetRoot(ツリーノードのルート){ 
        this.root =ルート; 
    } 

    frontShow(){公共ボイド
        (!ルート= NULL)であれば{ 
            root.frontShow()。
        } 
    } 

    パブリック無効midShow(){ 
        場合(ルート!= NULL){
            root.midShow(); 
        }

    } 

    afterShow(){公共ボイド
        (!ルート= NULL)であれば{ 
            root.afterShow()。
        } 
    } 

    公共のTreeNode frontSearch(int型I){ 
        (ルート= nullが!){場合
            root.frontSearch(i)を返します。
        } 
        はnullを返します。
    } 

    公共ボイドdeleteNode(INT I){ 
        場合(!ルート= NULL){ 
            root.deleteNode(I); 
        } 
    } 
    公共ボイド追加(ツリーノードのノード){ 
        IF(ルート== NULL){ 
            ルート=ノード。
        }他{ 
            root.add(ノード)。
        } 
    }

}

 

com.demo.calculate.beanパッケージ; 

インポートandroid.util.Log; 

publicクラスツリーノード{ 
    プライベートint値、
    ツリーノードnodeLeftプライベート; 
    プライベートツリーノードnodeRight; 
    公共ボイドsetNodeLeft(ツリーノードnodeLeft){ 
        this.nodeLeft = nodeLeft; 
    } 
    公共ボイドsetNodeRight (ツリーノードnodeRight){ 
        this.nodeRight = nodeRight; 
    } 
    公共のTreeNode(int値){ 
        this.value =値; 
    } 

    公共ボイドmidShow(){ 
        / ** 
         *。5. 4. 3. 6。7 1 
         * 1 1左点2右ノードノードmidShow 3()である。
         * 2 2点が左側のノードが正しいノード4であるmidShowれる5(); 
         / *
        (!nodeLeft = NULL){IF 
            ; nodeLeft.midShow()
        } 
        ; Log.i( "タグ"、値+ "")
        4第一時間値である//ルートノード2。
        {IF(nodeRight = NULL!)
            nodeRight.midShow(); 
        } 
    } 
    公共ボイド追加(ツリーノードのノード){ 
        IF(ノード== NULL){ 
            リターン; 
        } 
        //ノード挿入する決意値は、左のように、次に小さいと、現在のノードの値より小さくありません子ノード
        IF(node.value <値){ 
            IF(nodeLeft == NULL){ 
                nodeLeft =ノード; 
            }そうでなければ{ 
                nodeLeft.add(ノード); 
            } 
         挿入する//決意値ノードが現在のノードの値の比ではありません大小、次にように右の子ノードへ
        }他{
            IF(nodeRight == NULL){ 
                nodeRight =ノード。
            }他{ 
                nodeRight.add(ノード)。
            } 
        } 
    } 
}

おすすめ

転載: blog.csdn.net/xjz19930319/article/details/92803638