读书人

java写二叉树算法,兑现添加数据形成二

发布时间: 2012-12-23 11:28:15 作者: rapoo

java写二叉树算法,实现添加数据形成二叉树功能

public class MyTest {    private MyTree tree;    /**     *二叉树的插入,参数为(关键字,数据)     *      **/    public void insert(int key, int data) {        if (tree == null) {            tree = new MyTree();            tree.key = key;            tree.data = data;        } else {            MyTree newTree = new MyTree();            newTree.key = key;            newTree.data = data;            MyTree parent = tree;            while (true) {                if (newTree.key < parent.key) {                    if (parent.leftChild == null) {                        parent.leftChild = newTree;                        return;                    } else {                        parent = parent.leftChild;                    }                } else if (newTree.key > parent.key) {                    if (parent.rightChild == null) {                        parent.rightChild = newTree;                        return;                    } else {                        parent = parent.rightChild;                    }                }            }        }    }    /**     * 二叉树的查找,参数为(关键字),返回值为 myTree的一个实例     *      * **/    public MyTree find(int key) {        if (tree == null)            return null;        MyTree curr = new MyTree();        curr.key = key;        MyTree parent = tree;        while (true) {            if (parent == null) {                return null;            } else if (curr.key == parent.key) {                return parent;            } else if (curr.key > parent.key) {                parent = parent.rightChild;            } else if (curr.key < parent.key) {                parent = parent.leftChild;            }        }    }    /*     *      * 递归的二叉树中序遍历     */    private static void midOrder(MyTree tree) {        if (tree != null) {            midOrder(tree.leftChild);            System.out.println(" " + tree.key + "," + tree.data);            midOrder(tree.rightChild);        }    }    /*     * 前序遍历     */    private static void frontOrder(MyTree tree) {        if (tree != null) {            System.out.println("" + tree.key + "   ,   " + tree.data);            frontOrder(tree.leftChild);            frontOrder(tree.rightChild);        }    }    public static void main(String[] args) {        System.out.println("Tree   view   Begin");        MyTest t1 = new MyTest();        t1.insert(8, 25);        t1.insert(5, 9);        t1.insert(58, 87);        t1.insert(13, 82);        t1.insert(4, 8);        t1.insert(12, 54);        t1.insert(53, 123);        t1.insert(56, 47);        t1.insert(2, 75);        t1.insert(34, 5);        t1.insert(6, 23);        System.out.println("现在开始遍历:");        frontOrder(t1.tree);        midOrder(t1.tree);    }}class MyTree {    int key;    int data;    MyTree leftChild;    MyTree rightChild;}

读书人网 >编程

热点推荐