首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

将数组惠存二叉树

2012-10-29 
将数组存入二叉树package javastudy.caidan.二叉树0810/** * 二叉树类 ** @author 蔡丹 **/public class

将数组存入二叉树

package javastudy.caidan.二叉树0810;/** * 二叉树类 * * @author 蔡丹 * */public class Tree {private Node root;private Node node;/** * 程序入口 * @param args */public static void main(String args[]) {// 创建一个二叉树对象Tree tr = new Tree();int length=10;int [] array=tr.createSrcArray(length);for(int i=0;i<array.length;i++){System.out.print(array[i]+"\t");}System.out.println("\n");// 创建一个根结点Node root = tr.arrayTotree(array);// 遍历打印二叉树tr.printTree(root);}public int[] createSrcArray(int len){// 初始化要排序数组中的值int[] array = new int[len];for(int i=0;i<array.length;i++){// 创建一个随即对象java.util.Random ran = new java.util.Random();// 调用随即对象,每次循环时生成一个0~100间随机数int value = ran.nextInt(100);// 给数组中指定位置填上随机数array[i] = value;}return array;}/** * 将数组中的数传入树中 * @param array * @return */public Node arrayTotree(int[] array){// 如果为空抛出异常if(array.length==0){throw new RuntimeException("<<<<<<<<<<");}else {int n = array[0]; root = new Node(n); for(int i=1;i<array.length;i++){ addTotree(root,array[i]); }}return root;}/** * 将数组中的数存到树中相应位置 * @param node * @param array */public void addTotree(Node node,int data){//把传入的数创建为一个二叉树的节点Node newnode=new Node(data);if((Integer)node.getObj()>data){// 如果左结点不为空if(node.getLeft()!=null){// 将node左结点赋给nodenode = node.getLeft();// 递归addTotree(node,data);}else{node.setLeft(newnode);newnode.setParent(node);}}else{// 如果结点为空if(node.getRight()!=null){//将该结点设为右结点node = node.getRight();// 递归addTotree(node,data);}else{node.setRight(newnode);newnode.setParent(node);}}}/** * 遍历打印二叉树中的元素 * @param root */public void printTree(Node root) {// 中序遍历if (root != null) {printTree(root.getLeft());Object obj = root.getObj();System.out.println(obj);printTree(root.getRight());}}}

热点排行