看了二叉查找树就自己用java写了个。。写插入时。犯了个很二的错误,就不提了,使用的是中序遍历。
package com.bst; public class TreeNode<E extends Number> {//节点 private E element; //root private TreeNode<E> left; private TreeNode<E> right; public TreeNode(E e){ element=e; } public TreeNode(){} public boolean insert(E e){ //如果tree为空,则给root赋值 if(this.element==null){ this.setElement(e); return true; } TreeNode<E> current=this; //parent 在插入e时会用到 TreeNode<E> parent=this; while(current!=null) { //判断与root元素大小 if(e.floatValue()<current.element.floatValue()) { parent=current; current=current.left; //Go ledt 进入左子树!下同 }else if(e.floatValue()>current.element.floatValue()) { parent=current; current=current.right; }else return false; } //current=new TreeNode<E>(e) 给current指向,但不是其节点的子树所指。所以一直用parent if(e.floatValue()<parent.element.floatValue()) parent.left=new TreeNode<E>(e); else parent.right=new TreeNode<E>(e); return true; } public boolean search(E e){ TreeNode<E> current=this; while(current!=null){ if(e.floatValue()<current.element.floatValue()) current=current.left; else if(e.floatValue()>current.element.floatValue()) current=current.right; else return true; } return false; } public void print(){ if(left!=null) left.print(); System.out.print(element+" "); if(right!=null){ right.print(); } } public E getElement() { return element; } public void setElement(E element) { this.element = element; } public TreeNode<E> getLeft() { return left; } public void setLeft(TreeNode<E> left) { this.left = left; } public TreeNode<E> getRight() { return right; } public void setRight(TreeNode<E> right) { this.right = right; } public static void main(String[] args) { TreeNode<Integer> integer =new TreeNode<Integer>(); Integer[] intes={9,6,20,8,5,16,23}; for(Integer i:intes) integer.insert(i); //System.out.println(integer.search(9)); integer.print(); } }
相关推荐
用C++实现的最优二叉查找树,简单,明了,是数据结构里经典必学算法,初学者适用
1、 定义二叉查找树的类。 2、 实验验证如下算法的正确性、各种功能及指标: 1)实现二叉查找树结构; 2) 实现二叉查找树的查找、插入和删除等算法;
这个程序实现了二叉查找树的删除,增加,先序遍历,后序遍历,中序遍历,还有一些非递归和层次遍历!
二叉查找树c 源码
findwords查找文件是否有某单词,这是一个二叉查找树的练习
二叉查找树的C++实现
资源内容:完整的二叉查找树C++头文件,包括运算符重载,bst类构造器、bst类析构器、destroy()、size()、insert(),迭代器类的声明与实现,++运算符重载(前置、后置)、--运算符重载、*运算符重载、!=运算符重载、...
二叉查找树实现简单的信息检索
二叉查找树的实现。包括树的平衡以及树节点的删除。以及树的广度优先遍历,深度优先遍历。
课程的随堂作业,C语言的,用dev就能运行,萌新代码,勿喷,仅仅帮助不想写作业的朋友方便一下,反正老师也不会仔细检查的
二叉查找树
c++实现的二叉查找树,代码简陋,大家互相学习即可
二叉查找树的常用操作,含C++代码,找工作的时候可以放在手机里看。
二叉查找树的C语言实现,实现功能:插入、删除、查找。
作者给出了一种新的二叉查找树———红黑树的定义和建树方法,并给出了它在最坏情况下的查找效率估计。
二叉查找树 二分搜索树(英语:Binary Search Tree),也称为 二叉查找树 、二叉搜索树 、有序二叉树或排序二叉树。满足以下几个条件: 若它的左子树不为空,左子树上所有节点的值都小于它的根节点。 若它的右子树...
动态规划ppt(最优BST,矩阵连乘) 动态规划问题求解的步骤及分析 最优二叉查找树、矩阵连乘的问题分析、建模、伪代码
这里是二叉查找树的实现代码,如果有不明白的可以联系我,很多其他的C++代码我都有