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

二叉树 添加和查找

阅读更多
------------ 前几天闲下来时间做的一个二叉树的小例子-----------
(仅供参考)
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
1
分享到:
评论

相关推荐

    二叉树建立和查找 数据结构

    本压缩包包含的资源主要涉及二叉树的建立和查找操作,这对于理解和实践数据结构的学习至关重要。 二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。这种结构允许快速进行...

    c++实现二叉树的创建,遍历,添加,查找与删除

    - 分析二叉树基本操作(如添加、查找和删除)的时间复杂度。 2. **C++实现指南**: - **节点结构定义**: - 描述如何定义二叉树节点(Node)结构,包括节点的值、左子节点和右子节点指针。 - 解释节点结构在...

    C++数据结构-二叉树和线索二叉树

    基于二叉链表的二叉树,实现了二叉树的多种操作:添加、删除、拷贝、清空、树深度计算、父节点、兄弟节点获取、先中后序递归及非遍历、按层次遍历、中序迭代器(非递归算法)、节点查找、先序和中序序列重建二叉树、...

    数据结构二叉树的插入和删除

    二叉树的插入、删除和查找操作是数据结构中最基本的操作。通过这三种操作,我们可以维护二叉树的平衡性,并且实现高效的查询和插入操作。在实际应用中,二叉树可以应用于数据库索引、文件系统等领域。

    数据结构课程的所有线性表,栈,二叉树,查找,实验

    根据提供的文件信息,我们可以深入探讨数据结构中的几个关键概念,包括线性表、栈、二叉树以及查找算法。这些是计算机科学中最基础且重要的数据结构与算法之一,广泛应用于软件开发、数据库管理等多个领域。 ### ...

    关于二叉树的建立遍历查找程序代码

    二叉树是一种数据结构,由节点构成,每个节点最多有两个子节点,分别称为左子节点和右子节点。在本文中,我们将深入探讨如何使用C语言实现二叉树的建立、后序遍历、层次遍历、查找节点以及打印祖先节点的功能。 ...

    二叉树c++源代码实现查找,删除,插入等

    在本文中,我们将深入探讨如何使用C++编程语言实现二叉树的基本操作,包括查找、插入和删除。二叉树是一种非线性数据结构,它由节点构成,每个节点最多有两个子节点,通常称为左子节点和右子节点。这种数据结构在...

    数据结构:二叉树

    除了创建和遍历之外,二叉树还支持多种其他操作,包括查找、插入、删除节点等。这些操作对于实现更复杂的二叉树应用非常重要。 - **查找节点**:根据特定条件或值查找树中的节点。 - **插入节点**:向树中添加新...

    二叉树的c#实现 包括添加删除

    这个系统不仅可以应用于用户管理,还可以扩展到其他需要高效查找和操作数据的场景,例如数据库索引、文件系统等。在实际开发中,还需要考虑错误处理、性能优化等因素,以提供稳定可靠的用户体验。

    用Java编写的二叉树代码

    2. 二叉搜索树:一种特殊的二叉树,其中每个节点的左子树只包含小于它的节点,右子树包含大于它的节点,适合快速查找和排序。 3. 文件系统索引:二叉树可以用来组织文件系统的目录结构,方便快速定位文件。 通过...

    中序线索化二叉树及中序遍历

    总结来说,中序线索化二叉树是为了解决非递归中序遍历的问题,通过在二叉树的节点中添加线索,使得在遍历时可以直接找到前驱和后继节点。这种技术提高了遍历效率,尤其在处理大规模数据时更为明显。理解并掌握中序...

    基于C++实现二叉树的创建,遍历,添加,查找与删除

    本篇文章将详细探讨如何使用C++来创建、遍历、添加、查找和删除二叉树节点。 首先,我们需要定义一个二叉树节点的结构体。这个结构体通常包含两个指针,分别指向左子节点和右子节点,以及一个存储节点值的数据成员...

    数据结构(栈,队列,二叉树,图,排序查找等)

    本文将详细探讨标题和描述中提到的数据结构类型:栈、队列、二叉树、图以及排序和查找算法。 1. 栈(Stack) 栈是一种后进先出(LIFO,Last In First Out)的数据结构,常被比喻为“堆叠的盘子”。主要操作包括压入...

    二叉树(功能完整版)

    这种特殊的结构使得二叉树在实现查找、插入和删除操作时具有较高的效率。 在二叉树的完整功能版中,我们通常会涵盖以下知识点: 1. **定义与基本术语**:包括根节点、叶节点、分支节点、高度、深度、满二叉树、...

    二叉树和图的常用算法操作.zip

    1. **添加节点**:在二叉树中添加新节点通常涉及到找到合适的位置插入,这取决于二叉树的类型。对于二叉搜索树(BST),新节点应该比父节点小并插入左侧,或者比父节点大并插入右侧。对于其他类型的二叉树,如完全...

    二叉树插入和删除

    二叉树的插入操作涉及在正确的位置添加新的节点,以保持二叉树的特性。在给定的代码中,`insert_tree`函数实现了这个功能。它首先创建一个新的节点,然后通过比较新节点的数据与当前节点的数据来决定插入位置。如果...

    数据结构二叉树的基本操作

    二叉树的操作还包括插入新节点、删除节点、查找特定节点、平衡调整(如AVL树和红黑树)以及树的旋转等。这些操作在实际应用中至关重要,如数据库索引、文件系统和编译器设计等。 在实际编程中,理解二叉树的这些...

    平衡二叉树c++模版

    注意,由于题目中没有明确指出使用平衡二叉树,也可以选择其他数据结构,如哈希表(HashMap)来实现,但平衡二叉树在这种需要高效查找和排序的场景下,通常会表现出更好的性能。在实际编程中,应根据具体需求和性能...

Global site tag (gtag.js) - Google Analytics