`
codespace
  • 浏览: 26647 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java二叉树

阅读更多
public class Node {
    int id;   // 索引值
	int data;
	Node leftNode;
	Node rightNode;
	
	Node(){
		
	}
	
}



package tree;

public class BiTree {
	private static  Node root;

	public BiTree(){
		root=null;
	}

	public Node insertNode(int index,int val){
		Node newNode=new Node();
		newNode.id=index;
		newNode.data=val;
		boolean tr=true;
		if(root==null) root=newNode;
		else{
			Node current=root;
			
			while(tr){
				Node parent=current;
				if(index>current.id){
					current=current.rightNode;
					if(current==null){
						parent.rightNode=newNode;              //树的连接
						tr=false;
						return current;
					}
				}
				else{
					current=current.leftNode;
					if(current==null){
						parent.leftNode=newNode;
						tr=false;
						return current;
					}
				}
		
			}
		}
		return null;

	}
	public Node getNode(int index){
		Node current =root;
		boolean tr=true;
		if(root==null)
			return null;
		while(tr){
		
			if(current.id==index){
				System.out.println("get it : "+current.data);
				tr=false;
				return current;
			}
			if(current.id<index){
				current=current.rightNode;
			}
			else{
				current=current.leftNode;
			}
			if(current==null){
				System.out.println("null ,can not get it");
				tr=false;
				return null;
			}
		

		}
		return null;
	}

	/*
	 * 删除掉包括index在内和与index连接 的后面的点
	 */
	public  Node deleteNode(int index){
		Node current=root;
		Node parent = null;
		boolean tr=true;
		if(root==null) return null;
		if(root.leftNode==null&&root.rightNode==null) {
			root=null;
			return null;
		}
		while(tr){
			parent=current;
			if(current.id<index){
				
				current=current.rightNode;
				if(current.id==index){
					parent.rightNode=null;
					tr=false;
					return current;
				}
				if(current==null){
					tr=false;
					return current;
				}
			}
			else{
		     		current=current.leftNode;
				if(current.id==index){				
					parent.leftNode=null;
					tr=false;
					return current;
				}
				if(current==null){
					tr=false;
					return current;
				}
			}

		}
		return null;
	}

	public void inOrder(Node node){
      

		if(node!=null){
			inOrder(node.leftNode);
			System.out.print(node.data+ " ");
			inOrder(node.rightNode);
		}
	}
	
	public void postOrder(Node node){
	      

		if(node!=null){
			postOrder(node.leftNode);
			postOrder(node.rightNode);
			System.out.print(node.data+ " ");
		}
	}
	
	public void preOrder(Node node){
	      
		if(node!=null){
			System.out.print(node.data+ " ");
			preOrder(node.leftNode);
			preOrder(node.rightNode);
		}
	}

	public static void main(String[] args){
		BiTree bit=new BiTree();
		bit.insertNode(25, 3);
		bit.insertNode(3, 4);
		bit.insertNode(52, 33);
		bit.insertNode(523, 333);
		bit.insertNode(35, 13);
		bit.insertNode(532, 30);
		bit.insertNode(1, 113);
		bit.insertNode(15, 23);
		bit.insertNode(10, 3323);
		bit.getNode(10);
//		bit.deleteNode(523);
		bit.postOrder(root);
		System.out.println("");
		bit.preOrder(root);
		System.out.println("");
		bit.inOrder(root);

	}

}

0
0
分享到:
评论

相关推荐

    java二叉树算法(转)

    这篇博客"java二叉树算法(转)"可能会探讨如何在Java中实现和操作二叉树,特别是涉及算法的部分。二叉树通常用于搜索、排序和组织数据,其特性是每个节点最多有两个子节点,通常分为左子节点和右子节点。 二叉树的...

    Java二叉树算法实例.zip_java 二叉树_二叉树

    这个名为"Java二叉树算法实例.zip"的压缩包显然是一个针对初学者的教程,旨在帮助他们理解并掌握二叉树的基本概念和常见算法。 首先,二叉树是由节点构成的数据结构,每个节点包含两个子节点,分别称为左子节点和右...

    java 二叉树新增删除

    在本话题中,我们将深入探讨Java中二叉树的插入、删除操作以及遍历方法。 1. **二叉树的基本概念**: - **根节点**:二叉树中的顶级节点,没有父节点。 - **子节点**:由一个节点指向另一个节点的连接,指向的...

    java二叉树的前序+中序+后序遍历

    java实现 二叉树的遍历 前序遍历用到递归, 中序和后序遍历用到栈, 其实还是有一定难度的

    Java二叉树中序遍历

    本课程设计将详细介绍如何使用Java编程语言实现二叉树的中序遍历。 首先,我们先构建二叉树的节点类(Node),它包含一个数据字段(data)以及指向左子节点(left)和右子节点(right)的引用: ```java public ...

    java二叉树的前序+中序+后序遍历(修改后)

    二叉树的遍历,全部用递归实现,很有规律! 二叉树的遍历,全部用递归实现,很有规律

    Java 二叉树(生成与遍历)

    本项目提供了Java实现二叉树的相关代码,帮助你理解和操作这种数据结构。 首先,我们要了解二叉树的基本概念。二叉树可以分为几种类型:满二叉树(每个节点要么没有子节点,要么有左右两个子节点)、完全二叉树...

    java 二叉树实现

    java二叉树实现 (简单实现,入门用) /**创建二叉树*/ public BinaryTree createTree(String treeStr); /**寻找结点*/ public BinaryTree findNode(BinaryTree tree ,char sign); /**找所给结点的左子树*/ ...

    Java 二叉树 & Huffman coding

    总之,Java二叉树与Huffman编码是编程中处理数据结构和算法时的重要工具,它们在文件压缩、数据传输和搜索算法等领域有着广泛应用。掌握这些概念和实现方式对于提升编程能力,解决实际问题至关重要。

    JAVA二叉树课设可以实现用户输入数据以二叉树图形表示出来

    在给定的Java二叉树课程设计中,我们需要理解二叉树的概念,熟悉其性质和操作,以及如何在Java中实现这些操作。通过创建用户界面,用户可以输入数据,程序则需要将这些数据转换成二叉树的图形表示,并支持插入、删除...

    java二叉树的遍历

    "Java二叉树的遍历" Java二叉树的遍历是指对二叉树的节点进行访问和处理的过程。二叉树的遍历可以分为递归遍历和非递归遍历两种方式,分别对应递归函数和非递归算法。递归遍历通过函数的递归调用来访问二叉树的节点...

    Bitreesearch.rar_java二叉树实验

    在这个“Bitreesearch.rar_java二叉树实验”中,我们主要探讨的是如何利用Java语言来实现二叉排序树(Binary Search Tree, BST),以及如何进行中序遍历来展示树中的数据。这个实验将帮助我们深入理解二叉树的性质和...

    java二叉树查找

    在Java编程中,二叉树是一种非常重要的数据结构,它具有高效的查找、插入和删除操作。二叉树由节点组成,每个节点包含一个值、一个左子节点和一个右子节点。二叉查找树(Binary Search Tree,BST)是二叉树的一个...

    JAVA二叉树横向打印

    JAVA二叉树横向打印,利用二叉树节点类来完成二叉树的打印。

    JAVA二叉树插入节点、删除节点、修改节点操作(有源码)

    在计算机科学领域,二叉树是一种非常基础且重要的数据结构,尤其在算法设计和实现中扮演着关键角色。本文将详细讲解如何使用JAVA语言来实现二叉排序树(Binary Search Tree,简称BST),包括插入节点、删除节点以及...

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

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

Global site tag (gtag.js) - Google Analytics