------------ 前几天闲下来时间做的一个二叉树的小例子-----------
(仅供参考)
package listsample;
public class TreeList {
/*
节点类.不作任何操作 只声明节点数据成员.
并初始化
*/
class TreeNode{
public int nodeValue;
public TreeNode rightChild;
public TreeNode leftChild;
public TreeNode(){
rightChild = null;
leftChild = null;
}
}
public TreeNode root;//声明一个节点
public TreeList(){
root = new TreeNode();//并创建
root.nodeValue=1000;//初始节点的值为1000
}
/*
*method addNode()
*添加节点
*/
public void addNode(int nodeValue){
TreeNode newNode = new TreeNode();//声明节点
newNode.nodeValue=nodeValue;//节点的值=传进来的值
TreeNode tempNode = root;//声明一个节点 把创建的节点的值给tempNode
while(true){
if(nodeValue>tempNode.nodeValue){//如果传进的值大于节点的值
if(tempNode.rightChild==null){//节点的右边子节点=于空的话
tempNode.rightChild=newNode;//让这个值放在节点的右边
break;//退出
}else{
tempNode = tempNode.rightChild;//如果节点右边右值的话. 把节点右边的值赋给创建的这个节点
continue;//继续循环
}
}
if(nodeValue<tempNode.nodeValue){//如果传入的值小于左边的节点值
if(tempNode.leftChild==null){//如果节点左边的值=空
tempNode.leftChild=newNode;//让这个传入的值放在节点的左边
break;
}else{
tempNode = tempNode.leftChild;//如果有值.把节点左边的值赋给这个节点
continue;//继续循环
}
}
}
}
/*
method display()
显示方法
*/
public void display(TreeNode root){//传入的是那个节点
System.out.println(root.nodeValue);//先把根节点的值显示出来
TreeNode tempNode = root;//把传入的节点值给这个节点
if(tempNode.rightChild==null&&tempNode.leftChild==null){//如果根节点的左右都为空 则退出
return;
}else{
if(tempNode.rightChild!=null){//如果节点的右边不等于空
display(tempNode.rightChild);//递归调用自身 显示节点的右边数据
}
if(tempNode.leftChild!=null){//同上
display(tempNode.leftChild);
}
}
}
/*
method selectTree()
查找节点方法
parmet a 是要查找的值
TreeNode 传入的是个节点
*/
public void selectTree(int a,TreeNode root){
TreeNode tempNode = root;//把传入的节点给这个节点
if(tempNode.nodeValue==a){//如果节点里的值等于传入的值
System.out.println("find number");//显示找到
return;//并退出
}else if(tempNode.leftChild==null&&tempNode.rightChild==null){//如果左右节点都为空
return ;//退出
}else{
if(tempNode.rightChild!=null){//节点的右边不为空的话
selectTree(a,tempNode.rightChild);//递归调用自身显示要查找右边的值
}
if(tempNode.leftChild!=null){//同上
selectTree(a,tempNode.leftChild);
}
}
}
public static void main(String[] args) {
TreeList treelist = new TreeList();
treelist.addNode(800);
treelist.addNode(900);
treelist.addNode(569);
treelist.addNode(240);
treelist.addNode(300);
treelist.addNode(169);
treelist.display(treelist.root);
System.out.println("----------------");
treelist.selectTree(300,treelist.root);
System.out.println("----------------");
treelist.selectTree(245,treelist.root);
}
}
分享到:
相关推荐
本压缩包包含的资源主要涉及二叉树的建立和查找操作,这对于理解和实践数据结构的学习至关重要。 二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。这种结构允许快速进行...
- 分析二叉树基本操作(如添加、查找和删除)的时间复杂度。 2. **C++实现指南**: - **节点结构定义**: - 描述如何定义二叉树节点(Node)结构,包括节点的值、左子节点和右子节点指针。 - 解释节点结构在...
基于二叉链表的二叉树,实现了二叉树的多种操作:添加、删除、拷贝、清空、树深度计算、父节点、兄弟节点获取、先中后序递归及非遍历、按层次遍历、中序迭代器(非递归算法)、节点查找、先序和中序序列重建二叉树、...
二叉树的插入、删除和查找操作是数据结构中最基本的操作。通过这三种操作,我们可以维护二叉树的平衡性,并且实现高效的查询和插入操作。在实际应用中,二叉树可以应用于数据库索引、文件系统等领域。
根据提供的文件信息,我们可以深入探讨数据结构中的几个关键概念,包括线性表、栈、二叉树以及查找算法。这些是计算机科学中最基础且重要的数据结构与算法之一,广泛应用于软件开发、数据库管理等多个领域。 ### ...
二叉树是一种数据结构,由节点构成,每个节点最多有两个子节点,分别称为左子节点和右子节点。在本文中,我们将深入探讨如何使用C语言实现二叉树的建立、后序遍历、层次遍历、查找节点以及打印祖先节点的功能。 ...
在本文中,我们将深入探讨如何使用C++编程语言实现二叉树的基本操作,包括查找、插入和删除。二叉树是一种非线性数据结构,它由节点构成,每个节点最多有两个子节点,通常称为左子节点和右子节点。这种数据结构在...
除了创建和遍历之外,二叉树还支持多种其他操作,包括查找、插入、删除节点等。这些操作对于实现更复杂的二叉树应用非常重要。 - **查找节点**:根据特定条件或值查找树中的节点。 - **插入节点**:向树中添加新...
这个系统不仅可以应用于用户管理,还可以扩展到其他需要高效查找和操作数据的场景,例如数据库索引、文件系统等。在实际开发中,还需要考虑错误处理、性能优化等因素,以提供稳定可靠的用户体验。
2. 二叉搜索树:一种特殊的二叉树,其中每个节点的左子树只包含小于它的节点,右子树包含大于它的节点,适合快速查找和排序。 3. 文件系统索引:二叉树可以用来组织文件系统的目录结构,方便快速定位文件。 通过...
总结来说,中序线索化二叉树是为了解决非递归中序遍历的问题,通过在二叉树的节点中添加线索,使得在遍历时可以直接找到前驱和后继节点。这种技术提高了遍历效率,尤其在处理大规模数据时更为明显。理解并掌握中序...
本篇文章将详细探讨如何使用C++来创建、遍历、添加、查找和删除二叉树节点。 首先,我们需要定义一个二叉树节点的结构体。这个结构体通常包含两个指针,分别指向左子节点和右子节点,以及一个存储节点值的数据成员...
本文将详细探讨标题和描述中提到的数据结构类型:栈、队列、二叉树、图以及排序和查找算法。 1. 栈(Stack) 栈是一种后进先出(LIFO,Last In First Out)的数据结构,常被比喻为“堆叠的盘子”。主要操作包括压入...
这种特殊的结构使得二叉树在实现查找、插入和删除操作时具有较高的效率。 在二叉树的完整功能版中,我们通常会涵盖以下知识点: 1. **定义与基本术语**:包括根节点、叶节点、分支节点、高度、深度、满二叉树、...
1. **添加节点**:在二叉树中添加新节点通常涉及到找到合适的位置插入,这取决于二叉树的类型。对于二叉搜索树(BST),新节点应该比父节点小并插入左侧,或者比父节点大并插入右侧。对于其他类型的二叉树,如完全...
二叉树的插入操作涉及在正确的位置添加新的节点,以保持二叉树的特性。在给定的代码中,`insert_tree`函数实现了这个功能。它首先创建一个新的节点,然后通过比较新节点的数据与当前节点的数据来决定插入位置。如果...
二叉树的操作还包括插入新节点、删除节点、查找特定节点、平衡调整(如AVL树和红黑树)以及树的旋转等。这些操作在实际应用中至关重要,如数据库索引、文件系统和编译器设计等。 在实际编程中,理解二叉树的这些...
注意,由于题目中没有明确指出使用平衡二叉树,也可以选择其他数据结构,如哈希表(HashMap)来实现,但平衡二叉树在这种需要高效查找和排序的场景下,通常会表现出更好的性能。在实际编程中,应根据具体需求和性能...