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);
}
}
分享到:
相关推荐
这篇博客"java二叉树算法(转)"可能会探讨如何在Java中实现和操作二叉树,特别是涉及算法的部分。二叉树通常用于搜索、排序和组织数据,其特性是每个节点最多有两个子节点,通常分为左子节点和右子节点。 二叉树的...
这个名为"Java二叉树算法实例.zip"的压缩包显然是一个针对初学者的教程,旨在帮助他们理解并掌握二叉树的基本概念和常见算法。 首先,二叉树是由节点构成的数据结构,每个节点包含两个子节点,分别称为左子节点和右...
在本话题中,我们将深入探讨Java中二叉树的插入、删除操作以及遍历方法。 1. **二叉树的基本概念**: - **根节点**:二叉树中的顶级节点,没有父节点。 - **子节点**:由一个节点指向另一个节点的连接,指向的...
java实现 二叉树的遍历 前序遍历用到递归, 中序和后序遍历用到栈, 其实还是有一定难度的
本课程设计将详细介绍如何使用Java编程语言实现二叉树的中序遍历。 首先,我们先构建二叉树的节点类(Node),它包含一个数据字段(data)以及指向左子节点(left)和右子节点(right)的引用: ```java public ...
二叉树的遍历,全部用递归实现,很有规律! 二叉树的遍历,全部用递归实现,很有规律
本项目提供了Java实现二叉树的相关代码,帮助你理解和操作这种数据结构。 首先,我们要了解二叉树的基本概念。二叉树可以分为几种类型:满二叉树(每个节点要么没有子节点,要么有左右两个子节点)、完全二叉树...
java二叉树实现 (简单实现,入门用) /**创建二叉树*/ public BinaryTree createTree(String treeStr); /**寻找结点*/ public BinaryTree findNode(BinaryTree tree ,char sign); /**找所给结点的左子树*/ ...
总之,Java二叉树与Huffman编码是编程中处理数据结构和算法时的重要工具,它们在文件压缩、数据传输和搜索算法等领域有着广泛应用。掌握这些概念和实现方式对于提升编程能力,解决实际问题至关重要。
在给定的Java二叉树课程设计中,我们需要理解二叉树的概念,熟悉其性质和操作,以及如何在Java中实现这些操作。通过创建用户界面,用户可以输入数据,程序则需要将这些数据转换成二叉树的图形表示,并支持插入、删除...
"Java二叉树的遍历" Java二叉树的遍历是指对二叉树的节点进行访问和处理的过程。二叉树的遍历可以分为递归遍历和非递归遍历两种方式,分别对应递归函数和非递归算法。递归遍历通过函数的递归调用来访问二叉树的节点...
在这个“Bitreesearch.rar_java二叉树实验”中,我们主要探讨的是如何利用Java语言来实现二叉排序树(Binary Search Tree, BST),以及如何进行中序遍历来展示树中的数据。这个实验将帮助我们深入理解二叉树的性质和...
在Java编程中,二叉树是一种非常重要的数据结构,它具有高效的查找、插入和删除操作。二叉树由节点组成,每个节点包含一个值、一个左子节点和一个右子节点。二叉查找树(Binary Search Tree,BST)是二叉树的一个...
JAVA二叉树横向打印,利用二叉树节点类来完成二叉树的打印。
在计算机科学领域,二叉树是一种非常基础且重要的数据结构,尤其在算法设计和实现中扮演着关键角色。本文将详细讲解如何使用JAVA语言来实现二叉排序树(Binary Search Tree,简称BST),包括插入节点、删除节点以及...
### Java二叉树算法实现:节点插入与遍历示例代码 #### 一、核心概念与定义 在深入了解本文档中的代码之前,我们先来回顾一下二叉树的基本概念: - **二叉树**是一种非线性的数据结构,每个节点最多有两个子节点...