码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树

时间:2015-07-07 12:56:12      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

将数组构造成二叉查找树:

/*public class BinaryTree {

    private Node root;
    
    *//**
     * 内部类实现结点类,可提高安全性
     * 
     *//*

    private static class Node {
        Node left;
        Node right;
        int data;

        Node(int newData) {
            left = null;
            right = null;
            data = newData;
        }

    }

    *//**
     * 创建一个空的二叉树
     *//*

    public BinaryTree() {
        root = null;
    }
    
    *//**
     * 递归的插入数值
     * @param data    要插入的数值
     *//*

    public void insert(int data) {
        root = insert(root, data);
    }
    
    *//**
     * 将数值插入到二叉树中,比当前结点小或等于当前结点的插在当前结点的左侧,比当前结点大的数插在当前结点的右侧,每次从根结点开始递归比较
     * @param node    当前的结点,就是根结点,只是每次根结点的左右子孙更新
     * @param data    要插入的数值
     * @return    新排好的二叉树
     *//*

    private Node insert(Node node, int data) {

        if (node == null) {

            node = new Node(data);

        } else {
            if (data <= node.data) {
                node.left = insert(node.left, data);
            } else {
                node.right = insert(node.right, data);
            }
        }
        return (node);
    }
    
    *//**
     * 将数值输入构建二叉树
     * @param data    要输入的数值
     *//*

    public void buildTree(int[] data) {

        for (int i = 0; i < data.length; i++) {

            insert(data[i]);

        }

    }
    
    *//**
     * 递归打印出二叉树
     *//*

    public void printTree() {

        printTree(root);

        System.out.println();

    }
    
    *//**
     * 从根结点开始遍历,从树的最高层叶子结点开始输出,从左至右
     * @param node    当前的结点
     *//*

    private void printTree(Node node) {

        if (node == null)
            return;

        // left, node itself, right

        printTree(node.left);

        System.out.print(node.data + "  ");

        printTree(node.right);

    }

}*/

test样例:

import junit.framework.TestCase;

public class BinaryTreeTest extends TestCase {

    public void testBinaryTreeTest() {

        BinaryTree biTree = new BinaryTree();

        int[] data = { 2, 8, 7,23 ,19,4 ,9,31,6,7,5};

        biTree.buildTree(data);

        biTree.printTree();

    }

}

输出结果:

2  4  5  6  7  7  8  9  19  23  31 

 

二叉树

标签:

原文地址:http://www.cnblogs.com/hixin/p/4626535.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!