算法——顺序二叉树

package com.demo.calculate;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

import com.demo.calculate.bean.BinaryTree;
import com.demo.calculate.bean.TreeNode;

public class BinarySortATreectivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_binary_sort_tree);
        findViewById(R.id.btn_binarySortTree).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                createTree();
            }
        });
    }

    private void createTree() {
        BinaryTree binaryTree = new BinaryTree();
        int[] arr = new int[]{7,3,5,9,12,45,23,10};
        for (int i = 0; i <arr.length ; i++) {
            binaryTree.add(new TreeNode(arr[i]));
        }
        binaryTree.midShow();
    }
}
package com.demo.calculate.bean;

public class BinaryTree {
    private int value;
    private TreeNode root;
    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    public TreeNode getRoot() {
        return root;
    }

    public void setRoot(TreeNode root) {
        this.root = root;
    }

    public void frontShow() {
        if (root!=null){
            root.frontShow();
        }
    }

    public void midShow() {
        if (root!=null){
            root.midShow();
        }

    }

    public void afterShow() {
        if (root!=null){
            root.afterShow();
        }
    }

    public TreeNode frontSearch(int i) {
        if (root!=null){
            return root.frontSearch(i);
        }
        return  null;
    }

    public void deleteNode(int i) {
        if (root!=null){
            root.deleteNode(i);
        }
    }
    public void add(TreeNode node){
        if (root == null){
            root = node;
        }else{
            root.add(node);
        }
    }

}
package com.demo.calculate.bean;

import android.util.Log;

public class TreeNode{
    private int value;
    private TreeNode nodeLeft;
    private TreeNode nodeRight;
    public void setNodeLeft(TreeNode nodeLeft) {
        this.nodeLeft = nodeLeft;
    }
    public void setNodeRight(TreeNode nodeRight) {
        this.nodeRight = nodeRight;
    }
    public TreeNode(int value) {
        this.value = value;
    }

    public void midShow() {
        /**
         * 4  2  5  1  6  3 7
         * 1 根据点是1  左节点是2  右节点是3  midShow();
         * 2 根据点是2  左节点是4  右节点是5  midShow();
         */
        if (nodeLeft!=null){
            nodeLeft.midShow();
        }
        Log.i("tag",value+"");
        //根节点是2 第一次的时候value是4
        if (nodeRight!=null){
            nodeRight.midShow();
        }
    }
    public void add(TreeNode node) {
        if (node==null){
            return;
        }
        //判断要插入的节点的值是不是比当前节点的值小,小的话就作为左子节点
        if (node.value<value){
            if (nodeLeft==null){
                nodeLeft = node;
            }else{
                nodeLeft.add(node);
            }
         //判断要插入的节点的值是不是比当前节点的值大,小的话就作为右子节点
        }else{
            if (nodeRight==null){
                nodeRight = node;
            }else{
                nodeRight.add(node);
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/xjz19930319/article/details/92803638