- 浏览: 53425 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
virtual_function:
你确定啊 ?
关于JAVA ZIP追加新文件问题 -
bannamoon:
dongbiying 写道 帮我一大忙!不过,怎么没有说明要 ...
java读取excel -
dongbiying:
帮我一大忙!不过,怎么没有说明要jar呀!呵呵
java读取excel
TreeNode.java
BinaryTree.java
BinaryTreeMain.java
public class TreeNode implements Cloneable { private Object data; private TreeNode leftChild; private TreeNode rightChild; private TreeNode parent; private int level; private int lLevel; private int rLevel; public TreeNode(Object data){ this(data, null, null, null); } public TreeNode(Object data, TreeNode lc, TreeNode rc, TreeNode p){ this.data = data; this.leftChild = lc; this.rightChild = rc; this.parent = p; } public Object clone(){ return new TreeNode(this.data); } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public TreeNode getLeftChild() { return leftChild; } public void setLeftChild(TreeNode leftChild) { this.leftChild = leftChild; } public TreeNode getRightChild() { return rightChild; } public void setRightChild(TreeNode rightChild) { this.rightChild = rightChild; } public TreeNode getParent() { return parent; } public void setParent(TreeNode parent) { this.parent = parent; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } public int getlLevel() { return lLevel; } public void setlLevel(int lLevel) { this.lLevel = lLevel; } public int getrLevel() { return rLevel; } public void setrLevel(int rLevel) { this.rLevel = rLevel; } }
BinaryTree.java
public class BinaryTree { public static final boolean LEFT = true; public static final boolean RIGHT = false; private TreeNode root = null; private int level = 0;//树高 private int lLevel = 0;//左树高 private int rLevel = 0;//右树高 private int nodeNumber = 0;//节点树 private List<TreeNode> preOrderList = new ArrayList<TreeNode>(); private List<TreeNode> inOrderList = new ArrayList<TreeNode>(); private List<TreeNode> postOrderList = new ArrayList<TreeNode>(); private List<TreeNode> levelOrderList = new ArrayList<TreeNode>(); private List<TreeNode> levelQueue = new ArrayList<TreeNode>(); public TreeNode getRoot() { return root; } public int getLevel() { return level; } public int getNodeNumber() { return nodeNumber; } public int getlLevel() { return lLevel; } public int getrLevel() { return rLevel; } public List<TreeNode> getPreOrderList() { return preOrderList; } public List<TreeNode> getInOrderList() { return inOrderList; } public List<TreeNode> getPostOrderList() { return postOrderList; } public List<TreeNode> getLevelOrderList() { return levelOrderList; } /** * 插入节点,如果父节点已有要插入的左孩子或者右孩子, * 则根据要插入节点类型左孩子或者右孩子查找父节点对应孩子继续插入 * 参数parent为空,则表示为插入树的根节点 * @param parent 父节点 * @param node 子节点 * @param flag true-左孩子 false-右孩子 */ public void insertNode(TreeNode parent, TreeNode node, boolean flag){ if(parent == null){ this.root = node; node.setLevel(1); this.nodeNumber++;//节点数增加1 this.level++;//树高增加1 return; } if(flag == BinaryTree.LEFT){ TreeNode parentLeftChild = parent.getLeftChild(); if(parentLeftChild == null){ parent.setLeftChild(node); node.setParent(parent); }else{ insertNode(parentLeftChild, node, flag); } }else{ TreeNode parentRightChild = parent.getRightChild(); if(parentRightChild == null){ parent.setRightChild(node); node.setParent(parent); }else{ insertNode(parentRightChild, node, flag); } } node.setLevel(parent.getLevel()+1); this.nodeNumber++;//节点数增加1 this.level = node.getLevel()>this.level ? node.getLevel() : this.level; } /** * 先序遍历 * @return */ public void preOrderTraverse(TreeNode node){ if(node==null) return; this.preOrderList.add((TreeNode)node.clone()); preOrderTraverse(node.getLeftChild()); preOrderTraverse(node.getRightChild()); } /** * 中序遍历 * @return */ public void inOrderTraverse(TreeNode node){ if(node==null) return; inOrderTraverse(node.getLeftChild()); this.inOrderList.add((TreeNode)node.clone()); inOrderTraverse(node.getRightChild()); } /** * 后序遍历 * @return */ public void postOrderTraverse(TreeNode node){ if(node==null) return; postOrderTraverse(node.getLeftChild()); postOrderTraverse(node.getRightChild()); this.postOrderList.add((TreeNode)node.clone()); } /** * 层序遍历 * @return */ public void levelOrderTraverse(TreeNode node){ if(node == null) return; if(node.getLeftChild()!=null) this.levelQueue.add(node.getLeftChild()); if(node.getRightChild()!=null) this.levelQueue.add(node.getRightChild()); this.levelOrderList.add((TreeNode)node.clone()); if(levelQueue.size()>0) levelOrderTraverse(levelQueue.remove(0)); } }
BinaryTreeMain.java
public class BinaryTreeMain { /** * @param args */ public static void main(String[] args) { TreeNode a = new TreeNode("a"); TreeNode b = new TreeNode("b"); TreeNode c = new TreeNode("c"); TreeNode d = new TreeNode("d"); TreeNode e = new TreeNode("e"); TreeNode f = new TreeNode("f"); TreeNode g = new TreeNode("g"); BinaryTree tree = new BinaryTree(); tree.insertNode(null, a, BinaryTree.LEFT); tree.insertNode(a, b, BinaryTree.LEFT); tree.insertNode(b, c, BinaryTree.LEFT); tree.insertNode(b, d, BinaryTree.RIGHT); tree.insertNode(d, e, BinaryTree.LEFT); tree.insertNode(d, f, BinaryTree.RIGHT); tree.insertNode(e, g, BinaryTree.RIGHT); int level = tree.getLevel(); int number = tree.getNodeNumber(); tree.inOrderTraverse(tree.getRoot()); tree.preOrderTraverse(tree.getRoot()); tree.postOrderTraverse(tree.getRoot()); tree.levelOrderTraverse(tree.getRoot()); List<TreeNode> pre = tree.getPreOrderList(); List<TreeNode> in = tree.getInOrderList(); List<TreeNode> post = tree.getPostOrderList(); List<TreeNode> levelList = tree.getLevelOrderList(); System.out.println("----------------"); } }
发表评论
-
java io重定向System.out,System.err屏蔽程序调试信息
2012-01-11 17:01 1130来源于java io犀牛书籍系列。 1,先定义空实现输出类一枚 ... -
iconst
2011-12-05 15:31 7970~5 iconst; -1 iconst_m1 -
java实现任意整数相乘
2011-08-01 13:34 1020public class Mutiply { pu ... -
Spring属性文件加密
2011-04-20 14:24 851使用Spring时,一般使用 <context:prop ... -
myeclipse ant打包 Could not find the main class. Program will exit
2011-04-14 09:16 1295情况1:myeclipse ANT设置不正确。 解决:重新设置 ... -
面向关系编程
2011-04-05 20:46 787写在前面的话。该文章用于记录当时的一些面向对象的思考。 目前的 ... -
关于POI导出EXCEL写入多个数据有效性验证
2011-03-29 17:22 2006建立多个HSSFDataValidation //POI ... -
JAVA三种解析方式解析XML
2011-03-22 12:48 1080JAVA中存在三种方式解析XML。例中代码未进行异常捕捉。 1 ... -
JFreeChart饼图取消图中标签
2011-03-10 12:30 1028//创建圆饼图 JFreeChartchart=Char ... -
ProGuard代码混淆及Spring框架时找不到利用注解获取的bean
2010-09-19 10:39 5228ProGuard代码混淆及Spring框架时找不到利用注解获取 ... -
Java字节码查看器及反编译工具
2010-08-27 17:39 1171两个工具见附件! -
JAVA JNI调用本地方法
2010-08-07 12:49 919声明Native方法: package cn.com.sk ... -
JAVA 自定义Annotation(注解)
2010-08-07 00:33 963注解接口隐式的继承java.lang.annotation.A ... -
关于JAVA ZIP追加新文件问题
2010-08-04 22:45 2528JAVA中ZipOutputStream是不支持直接向原.zi ... -
java泛型
2010-08-03 15:57 835Java泛型只是在编译器将[类型变量]都替换成了Object类 ... -
JAVA 正则表达式 贪心与非贪心
2010-04-22 20:23 3286java正则表达式中默认的是贪心匹配。如果要实现非贪心匹配,需 ... -
JAVA写excel
2010-04-17 08:10 1035在用JXL写入EXCEL文件时遇到一个比较奇怪的问题。例如每次 ... -
java读取excel
2010-04-17 08:02 1741JDK1.5 JXL1.4 JXL如果版本与JDK不兼容造成读 ...
相关推荐
"数据结构--二叉树--思维导图" 二叉树是一种常见的数据结构,它是一种树形结构,每个节点最多有两个孩子节点,分别是左子树和右子树。二叉树可以用来存储大量数据,并且可以快速地查找、插入和删除数据。 二叉树的...
【数据结构:树和二叉树】 树是一种非线性的数据结构,它的基本概念和术语在计算机科学中至关重要,尤其在算法设计和数据组织中扮演着核心角色。树的定义基于递归,一棵非空树包含一个根节点,以及一组互不相交的...
总的来说,这个“数据结构实验之二叉树”旨在帮助学习者掌握二叉树的基本概念、遍历方法以及如何在实际应用中(如使用MFC)实现这些概念。通过这个实验,不仅可以锻炼编程技能,还能提高对数据结构的理解,为未来的...
在IT领域,数据结构是计算机...总的来说,二叉树是数据结构学习的关键部分,理解和熟练运用二叉树对于提升算法和数据结构的综合能力至关重要。在实验过程中,不断实践和优化代码,将有助于你更好地掌握这一重要概念。
二叉树是计算机科学中数据结构的一个重要概念,它在许多算法和问题解决中起着核心作用。在深入探讨之前,我们先理解一下二叉树的基本定义:二叉树是一种特殊的树形数据结构,其中每个节点最多有两个子节点,通常称为...
"数据结构树和二叉树遍历二叉树和线索二叉树PPT学习教案.pptx" 本资源主要讲述了数据结构树和二叉树遍历的相关知识点,包括二叉树的基本概念、二叉树遍历的六种方案、先序、中序、后序遍历算法的实现、线索二叉树的...
本资源提供了详细的数据结构C语言版二叉树及其查找结构的知识点,包括树的定义、树的特点、二叉树的基本形态、 二叉树的性质、二叉树的存储结构和普通树转换成二叉树等方面的内容,对学习数据结构的新手有很大的帮助...
【二叉树】是数据结构中的重要组成部分,它是一种特殊的树形结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。...学习二叉树有助于深入理解数据结构的底层逻辑,是计算机科学基础教育的重要部分。
11. 心得体会:通过本次课程设计,学生可以学到递归创建和非递归创建二叉树等有关二叉树的基本知识,并提高动手能力和学习数据结构的能力。 12. 数据结构的重要性:数据结构是计算机科学和信息技术的基础,学习数据...
总的来说,理解和实现二叉树在C语言中的操作是数据结构学习的重要部分。通过实际编码练习,不仅可以巩固理论知识,还能提高解决实际问题的能力。在软件开发中,二叉树常用于搜索、排序和索引等任务,因此熟练掌握...
二叉树作为数据结构的一种,是数据结构课程设计中的重要学习内容。在这个《数据结构课程设计》项目中,我们专注于二叉树的基本操作,通过两个源文件(file1.cpp 和 file2.cpp)以及一个头文件(head.h)实现了一系列...
数据结构是计算机科学中的核心课程,它探讨了如何有效地存储和检索数据,以优化程序的性能。二叉树是数据结构中的一...通过学习和实践,你将能够更好地理解和运用这一重要的数据结构,为未来的编程工作打下坚实的基础。
线索二叉树是一种特殊形式的二叉树,...在数据结构的学习中,理解和掌握线索二叉树的构造与操作是提升算法能力的关键步骤。通过实际编写和调试代码,学生可以更好地领会这种数据结构的工作原理及其在实际问题中的应用。
数据结构中的树与二叉树是计算机科学中基础且重要的概念,它们被广泛应用于软件开发、数据库设计、算法分析等领域。清华大学出版社的数据结构教材详细介绍了这些概念,旨在帮助读者理解和掌握这一领域的核心知识。 ...
在IT领域,数据结构是计算机科学的基础,而二叉树作为一种重要的数据结构,广泛应用于算法设计和程序开发中。C++ Standard Template Library (STL) 提供了对多种数据结构和算法的支持,其中包括对二叉树的操作。在这...
在IT领域,数据结构是计算机科学的基础,它研究如何有效地组织和存储数据,以便于算法的执行。...通过分析“数据结构之二叉树”这个压缩包中的内容,你将有机会亲手实现这些概念,并通过实践加深理解。
### 东北大学数据结构实验3:树和二叉树 #### 实验背景 本次实验是针对东北大学计算机专业本科生的数据结构课程中的一项实践任务。实验的主要目的是帮助学生深入理解和掌握树形数据结构中的两种基本类型——树...
本实验“广工数据结构实验——平衡二叉树”着重探讨了一种特殊类型的数据结构,即平衡二叉树。平衡二叉树是二叉搜索树(Binary Search Tree, BST)的一个变体,它通过保持树的高度平衡来确保查找、插入和删除操作的...
在IT领域,数据结构是计算机科学的基础之一,它关乎如何高效地存储和处理数据。平衡二叉树(Balanced Binary Tree)是数据结构中的一个重要概念,尤其在算法设计和数据库系统中发挥着关键作用。本实验是针对广东工业...