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

Java实现二叉树

    博客分类:
  • java
阅读更多
java实现二叉树
代码如下:

package com.huawei.interview;

 

public class Node {

      public int value;
      public Node left;
      public Node right;

      public void store(int value)
      {
            if(value<this.value)
            {
                  if(left == null)
                  {
                        left = new Node();
                        left.value=value;
                  }
                  else
                  {
                        left.store(value);
                  }
            }
            else if(value>this.value)
            {
                  if(right == null)
                  {
                       right = new Node();
                       right.value=value;
                  }
                  else
                  {
                        right.store(value);
                  }                 
            }
      }
      
      public boolean find(int value)
      {     
            System.out.println("happen " + this.value);
            if(value == this.value)
            {
                  return true;
            }
            else if(value>this.value)
            {
                  if(right == null) return false;
                  return right.find(value);
            }else
            {
                  if(left == null) return false;
                  return left.find(value);
            }
      }

      public  void preList()
      {
           System.out.print(this.value + ",");
            if(left!=null) left.preList();
            if(right!=null) right.preList();
      }

      

      public void middleList()
      {
            if(left!=null) left.preList();
            System.out.print(this.value + ",");
            if(right!=null) right.preList();          
      }

      public void afterList()
      {
            if(left!=null) left.preList();
            if(right!=null) right.preList();
            System.out.print(this.value + ",");       
      }     

      public static void main(String [] args)
      {
            int [] data = new int[20];
            for(int i=0;i<data.length;i++)
            {
                  data[i] = (int)(Math.random()*100) + 1;
                  System.out.print(data[i] + ",");
            }

            System.out.println();          

            Node root = new Node();
            root.value = data[0];

            for(int i=1;i<data.length;i++)
            {
                  root.store(data[i]);
            }
            
            root.find(data[19]);            

            root.preList();
            System.out.println();
            root.middleList();
            System.out.println();         
            root.afterList();
      }
}

-----------------又一次临场写的代码---------------------------

import java.util.Arrays;
import java.util.Iterator;

 

public class Node {
      private Node left;
      private Node right;
      private int value;
      //private int num;

      

      public Node(int value){
            this.value = value;
      }

      public void add(int value){            
            if(value > this.value)
            {
                  if(right != null)
                        right.add(value);
                  else
                  {
                        Node node = new Node(value);                    
                        right = node;
                  }
            }
            else{
                  if(left != null)
                        left.add(value);
                  else
                  {
                        Node node = new Node(value);                    
                        left = node;
                  }                 
            }
      }

      

      public boolean find(int value){
            if(value == this.value) return true;
            else if(value > this.value){
                  if(right == null) return false;
                  else return right.find(value);
            }else{
                  if(left == null) return false;
                  else return left.find(value);             
            }
      }

      

      public void display(){
            System.out.println(value);
            if(left != null) left.display();
            if(right != null) right.display();           
      }

      

      /*public Iterator iterator(){

            

      }*/

      
      public static void main(String[] args){
            int[] values = new int[8];
            for(int i=0;i<8;i++){
                  int num = (int)(Math.random() * 15);
                  //System.out.println(num);
                  //if(Arrays.binarySearch(values, num)<0)
                  if(!contains(values,num))
                        values[i] = num;
                  else
                        i--;
            }

            

            System.out.println(Arrays.toString(values));
            

            Node root  = new Node(values[0]);
            for(int i=1;i<values.length;i++){
                  root.add(values[i]);

            }

            

            System.out.println(root.find(13));           
            root.display();            
      }

      

      public static boolean contains(int [] arr, int value){
            int i = 0;
            for(;i<arr.length;i++){
                  if(arr[i] == value) return true;
                 
            }
            return false;
      }

      

}
分享到:
评论

相关推荐

    Java实现二叉树的基本操作

    以上就是Java实现二叉树的基本操作的详细讲解,这些操作对于理解和应用数据结构在实际问题中非常重要。在Java中,二叉树的实现可以帮助我们解决许多算法问题,例如搜索、排序、路径查找等。通过熟练掌握这些操作,...

    java实现二叉树最佳方法

    总之,Java实现二叉树的最佳方法依赖于对二叉树性质的深入理解以及对Java语言特性的熟练应用。递归构建和遍历是实现二叉树的两个核心方面,它们共同构建了复杂二叉树算法的基石。在实际应用中,还需要考虑树结构的...

    Java实现二叉树的遍历

    java实现二叉树非递归前序中序后序遍历

    java实现二叉树数据结构

    java实现二叉树数据结构,简单明了,免费下载

    java实现二叉树遍历demo

    本示例"java实现二叉树遍历demo"将通过一个简单的实例来演示这三种遍历方式。 1. **前序遍历**: 前序遍历的顺序是:根节点 -&gt; 左子树 -&gt; 右子树。在代码实现中,通常采用递归的方法。首先访问根节点,然后递归地...

    Java实现二叉树,Java实现队列.pdf

    【Java实现二叉树】 在Java中,二叉树是一种数据结构,由多个节点组成,每个节点最多有两个子节点,通常分为左子节点和右子节点。二叉树的节点通常包含一个值以及指向其左子节点和右子节点的引用。在提供的代码中,...

    Java实现二叉树的相关操作

    以上就是Java实现二叉树的基本操作,包括创建、插入、删除和搜索节点,以及遍历二叉树的方法。这些操作为处理各种算法问题提供了基础,如二叉搜索树、平衡二叉树、堆等。掌握二叉树的原理和实现对于提升编程能力至关...

    Java实现二叉树中序线索化(图形界面 含代码)

    Java实现二叉树中序线索化 左键画节点 右键画跟 点可以拖动 两个节点可以连线 确认进行线索化 并画出线索

    java实现二叉树

    java实现2叉树 的一些简单的算法 例如 删除 插入 查找

    java实现二叉树遍历算法(源代码)

    ### Java实现二叉树遍历算法详解 #### 一、引言 在计算机科学中,二叉树是一种常用的数据结构,广泛应用于各种算法和数据处理场景。为了更好地理解和操作二叉树,掌握其遍历算法至关重要。本文将详细介绍如何使用...

    Java实现二叉树的先序、中序、后续、层次遍历

    在讲解Java实现二叉树的先序、中序、后序、层次遍历时,我们需要先了解几个关键知识点。 首先,二叉树是一种非常基础且重要的数据结构,每个节点最多有两棵子树,通常称这两棵子树为“左子树”和“右子树”。二叉树...

    java实现二叉树的遍历

    ### Java 实现二叉树的遍历 #### 一、数据结构分类 在计算机科学领域,数据结构可以按照逻辑结构和存储结构进行分类。 - **逻辑结构**: - **集合**:没有逻辑上的关系,如集合中的元素彼此独立。 - **线性结构*...

    用java实现二叉树的创建和遍历.doc

    本篇将详细阐述如何使用Java实现二叉树的创建和遍历。 首先,我们需要创建一个二叉树节点类`FOBiTree.java`,它包含以下属性和方法: 1. `char data`: 存储节点的值,例如字符。 2. `FOBiTree lNode`: 指向左子树...

    java实现二叉树程序

    java用队列实现的二叉树程序//入队 public void enqueue(E e); //出队 public E dequeue(); //取队列第一个 public E front(); //队列是否为空 public boolean isEmpty(); //队列大小 public int size...

    JAVA实现二叉树建立、遍历

    Java作为一种强大的面向对象编程语言,提供了丰富的数据结构支持,包括二叉树的实现。 首先,我们来看如何通过先序和中序序列建立二叉树。先序遍历顺序是:根节点 -&gt; 左子树 -&gt; 右子树;中序遍历顺序是:左子树 -&gt; ...

    Java实现二叉树的层次遍历

    本篇文章将详细探讨如何实现二叉树的层次遍历,即按照从根节点到叶子节点的层次顺序访问所有节点。 首先,我们需要定义二叉树节点的数据结构。在`BinaryTree.java`文件中,我们可以创建一个名为`Node`的类来表示树...

    java 二叉树实现

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

    用Java实现二叉树的深度优先、广度优先遍历

    本篇文章将深入探讨如何使用Java来实现二叉树的深度优先遍历(DFS, Depth First Search)和广度优先遍历(BFS, Breadth First Search)。 **深度优先遍历** 是一种在图或树中搜索的方法,它尽可能深地探索树的分支...

Global site tag (gtag.js) - Google Analytics