标签:
将数组构造成二叉查找树:
/*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