`
zhangyou1010
  • 浏览: 303279 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用java写的一个简单二叉树的插入和中序遍历

    博客分类:
  • java
阅读更多
树的节点bean
public class TreeNode {
	
	//节点的内容
	private NodeBean  data ;
	//左节点
	private TreeNode left;
	//右节点
	private TreeNode rigth;
	
	//构造函数
	public TreeNode(){
		data = new NodeBean();
	}
}


二叉树类
public class Tree {
	private TreeNode root;
	
	Tree(){
		root = new TreeNode();
		NodeBean nodeBean = new NodeBean();
		nodeBean.setKey(60);
		root.setData(nodeBean);
	}
	
	public NodeBean find(int key){
		return null;
	}
	
	//给树插入数据	
	public void insert(TreeNode root,TreeNode bean) {
		if (root == null) {
			root = bean;
		} else {
			if (bean.getData().getKey() < root.getData().getKey()) {
				if (root.getLeft() == null) {
					root.setLeft(bean);
				} else{
					insert(root.getLeft(),bean);
				}
			} else {
				if (root.getRigth() == null) {
					root.setRigth(bean);
				} else{
					insert(root.getRigth(),bean);
				}
			}
		}
	}
	
	//中序遍历二叉树
	public  String  middleIterator(TreeNode tree){
		StringBuilder sb = new StringBuilder();
		
		if (tree == null) {
			return sb.toString();
		} else{
			sb.append(tree.getData().getKey()+",");
			
			sb.append(middleIterator(tree.getLeft()));
			
			sb.append(middleIterator(tree.getRigth()));
		}
		
		return sb.toString();
	}
	
	
	public static void main(String[] args) {
		Tree myTree = new Tree();
		TreeNode treeNode = new TreeNode();
		treeNode.getData().setKey(50);
		
		TreeNode treeNode1 = new TreeNode();
		treeNode1.getData().setKey(45);
		
		TreeNode treeNode2 = new TreeNode();
		treeNode2.getData().setKey(30);
		
		TreeNode treeNode3 = new TreeNode();
		treeNode3.getData().setKey(55);
		
		TreeNode treeNode4 = new TreeNode();
		treeNode4.getData().setKey(70);
		
		myTree.insert(myTree.root, treeNode);
		myTree.insert(myTree.root, treeNode1);
		myTree.insert(myTree.root, treeNode2);
		myTree.insert(myTree.root, treeNode3);
		myTree.insert(myTree.root, treeNode4);
		
		String result = myTree.middleIterator(myTree.getRoot());
		System.out.println(result);
	}
分享到:
评论

相关推荐

    Java二叉树中序遍历

    为了完整地使用这个程序,我们需要在主类中创建一个`BinarySearchTree`实例,插入一些节点,然后调用`inorder()`方法来打印出中序遍历的结果。例如: ```java public static void main(String[] args) { ...

    链式二叉树的中序创建、递归中序遍历、非递归堆栈中序遍历、中序销毁

    非递归中序遍历使用一个辅助堆栈来避免函数调用的开销。其基本步骤如下: 1. 初始化一个空堆栈,设置当前节点为根节点。 2. 当当前节点不为空或堆栈未空时,循环执行以下操作: a. 如果当前节点不为空,将其压入...

    二叉树建立遍历

    本主题主要关注的是二叉树的建立以及它的遍历方法——中序遍历和后序遍历。 首先,我们需要理解如何建立二叉树。二叉树的建立通常有两种方式:一种是通过序列化数据(如字符串或数组)来构建,另一种是动态创建。...

    java前序中序构造二叉树

    本话题主要涉及使用Java语言,通过给定的前序和中序遍历结果来构造二叉树,以及对构造出的二叉树进行后序遍历和判断是否为平衡二叉树。以下是关于这些知识点的详细解释: 1. **二叉树**: 二叉树是一种特殊的树形...

    二叉树的遍历 java语言实现

    在Java中,`TreeNode`类定义了一个简单的二叉树节点,包含一个整数值`value`,以及指向左子节点`left`和右子节点`right`的引用。`BinaryTree`类包含了与二叉树相关的操作,如获取树的高度`getTreeHeight()`和各种...

    二叉树的线索化(中序线索二叉树)

    这一过程涉及到对二叉树节点的修改,添加两个额外的指针,称为“前向线索”(in-order predecessor pointer)和“后向线索”(in-order successor pointer),分别指向中序遍历中的前一个和后一个节点。 首先,我们...

    Java 二叉树(生成与遍历)

    在Java中,你可以通过创建一个类来表示二叉树的节点,这个类通常包含三个属性:值、左子节点和右子节点。以下是一个简单的二叉树节点类的实现: ```java public class TreeNode { int val; TreeNode left; ...

    Java二叉树算法实现:节点插入与遍历示例代码

    ### Java二叉树算法实现:节点插入与遍历示例代码 #### 一、核心概念与定义 在深入了解本文档中的代码之前,我们先来回顾一下二叉树的基本概念: - **二叉树**是一种非线性的数据结构,每个节点最多有两个子节点...

    java实现的中序与前序线索二叉树代码,能直接运行,能实现二叉树的中序线索化和前序线索化

    首先,我们需要定义一个二叉树节点类,它包含三个字段:数据、左子节点、右子节点,以及两个线索指针,分别用于前序和中序遍历。 ```java public class TreeNode { int data; TreeNode left, right; boolean ...

    二叉树的初始化及应用:二叉树的插入,删除,二叉树的前序后序遍历

    二叉树的遍历主要包括前序遍历、中序遍历和后序遍历。 1. **前序遍历**:先访问根节点,再遍历左子树,最后遍历右子树。 2. **后序遍历**:先遍历左子树,再遍历右子树,最后访问根节点。 例如,前序遍历的递归...

    树的前序遍历

    这里以MySQL为例,提供一个模拟前序遍历的例子: ```sql WITH RECURSIVE tree AS ( SELECT id, value, parent_id, 1 as level FROM my_table WHERE parent_id IS NULL -- 根节点 UNION ALL SELECT t.id, t....

    Java创建二叉树java

    代码实现: 二叉树的查找、插入、删除和输出根节点到当前节点的路径 二叉树的前序遍历,中序遍历和后续遍历 TreeNode.java --定义树节点 Mytree.java----创建树结构和上述功能函数 TestTree.java --测试上述的功能

    基于Java实现的二叉树的创建以及三种遍历.zip

    本资料包主要探讨了如何在Java中创建二叉树以及其三种基本遍历方法:前序遍历、中序遍历和后序遍历。首先,我们需要理解二叉树节点的定义,它通常包含一个数据字段和两个指向子节点的引用。 1. **二叉树节点定义**...

    java算法二叉树遍历源码文档.doc

    否则,使用一个临时变量`temp`回溯到合适的位置(根据输入元素与当前节点值的大小关系)并插入新节点。 二叉树的遍历主要有三种方式:前序遍历、中序遍历和后序遍历。这些遍历方法主要用于访问树的所有节点,每种...

    java实现的二叉树源码

    1. **节点(Node)**: 节点是二叉树的基本构建单元,通常包含两个子节点(左子节点和右子节点)以及一个存储数据的属性。在`Node.java`文件中,我们可以预期看到一个`Node`类的定义,该类可能包含以下属性和方法: -...

    二叉树实现源码(C、C++、JAVA)

    二叉树是一种基础且重要的...C、C++和JAVA三种语言的实现源码提供了一个直观的学习平台,有助于开发者深入理解二叉树的构造和操作。通过阅读和分析这些源码,你可以更好地领悟二叉树的精髓,并将其应用到实际项目中。

    二叉树的创建、遍历、查找、删除

    二叉树有三种基本的遍历方式:前序遍历、中序遍历和后序遍历。 1. **前序遍历**:首先访问根节点,然后遍历左子树,最后遍历右子树。在代码实现中,通常通过递归方式实现,先调用当前节点的前序遍历方法,然后递归...

    平衡二叉树(AVL).png

    平衡二叉树建立过程分析,从第一个元素的插入,截止至最后一个元素,均以详细的画图展示

Global site tag (gtag.js) - Google Analytics