数据结构与算法(十一)二叉树结点的插入/查找

来源:互联网 发布:数据库系统教程答案 编辑:程序博客网 时间:2024/05/17 01:32

二叉树的操作


1. 插入结点

从根结点开始查找一个相应的结点,这个结点将称为新插入结点的父结点。当父结点找到后,通过判断新结点的值与父结点的值的大小来决定是连接到左子结点还是右子结点。


2. 查找结点

从根结点开始查找,如果查找的结点值比当前结点的值小,则继续查找其左子树,否则查找其右子树。


二叉树结点

/* * 二叉树结点 */public class Node {//数据项public long data;//数据项public String sData;//左子结点public Node leftChild;//右子结点public Node rightChild;/* * 构造函数 */public Node(long data,String sData){this.data=data;this.sData=sData;}}

二叉树类

/* * 二叉树类 *//* * 为什么要使用树 *  * 有序数组插入数据项和删除数据项太慢 * 链表查找数据太慢 * 在树中能非常快速的查找数据项、删除数据项和插入数据项 */public class Tree {//根结点public Node root;/* * 插入结点 */public void insert(long value,String sValue){//封装结点Node newNode=new Node(value,sValue);//引用当前结点Node current=root;//引用父结点Node parent;//如果root为null,也就是第一插入的时候if(root==null){root=newNode;return;}else{while(true){//父结点指向当前结点parent=current;//如果当前指向的结点数据比插入的要大,则向左走if(current.data>value){current=current.leftChild;if(current==null){parent.leftChild=newNode;return;}}else{current=current.rightChild;if(current==null){parent.rightChild=newNode;return;}}}}}/* * 查找结点 */public Node find(long value){//引用当前结点,从跟结点开始Node current=root;//循环,只要查找值不等于当前结点的数据项while(current.data!=value){//进行比较,比较查找值和当前结点的大小if(current.data>value){current=current.leftChild;}else{current=current.rightChild;}//如果查找不到if(current==null){return null;}}return current;}/* * 删除结点 */public void delete(long value){}}


0 0
原创粉丝点击