Java 二叉查找(排序)树 创建 以及中序和层序遍历
来源:互联网 发布:淘宝双11营业额 编辑:程序博客网 时间:2024/06/06 01:43
首先我们需要知道二叉排序树是个什么东西。它或者是一棵空树或者是具有下列性质的二叉树:1.如果左子树不空,那么左子树上所有节点的值均小于它的根节点的值2.如果右子树不空,那么右子树上所有节点的值均小于它的根节点的值3.左右子树也分别为二叉排序树
import java.util.LinkedList;import java.util.Queue;class biNode{private int data;private biNode left;private biNode right;//构造函数public biNode(int data){this.data=data;this.left=null;this.right=null;}public void setData(int data){this.data=data;}public int getData(){return this.data;}public void setLeft(biNode left){this.left=left;}public biNode getLeft(){return this.left;}public void setRight(biNode right){this.right=right;}public biNode getRight(){return this.right;}}public class binarySearchTree {private biNode root;//构造函数public void binarySearchTree(){this.root=null;}//把结点插入二叉树中构造线索二叉树public void insert(int data){biNode newNode = new biNode(data);if(root==null){root=newNode;}else{biNode currentNode=root;biNode parent;//寻找插入位置while(true){parent=currentNode;if(data<currentNode.getData()){currentNode=currentNode.getLeft();if(currentNode==null){parent.setLeft(newNode);return;}}else{currentNode=currentNode.getRight();if(currentNode==null){parent.setRight(newNode);return;}}}}}//通过一个整数数组构建线索二叉树public void buildTree(int[] d){for(int i=0;i<d.length;i++){insert(d[i]);}}//中序递归遍历线索二叉树public void inorder(biNode localRoot){if(localRoot!=null){inorder(localRoot.getLeft());System.out.print(localRoot.getData()+" ");inorder(localRoot.getRight());}}//用队列实现层序遍历二叉树public void layerTranverse(biNode root){//为什么不能创建queue类型的对象 直接//Queue<biNode> myq=new Queue<biNode>();//因为Queue只是一个接口 Linkedlist才是实现了它的一个具体的类Queue<biNode> myq=new LinkedList<biNode>();biNode tmp=root;if(tmp==null){return;}else{myq.add(tmp);while(!myq.isEmpty()){biNode n=myq.poll();System.out.print(n.getData()+" ");if(n.getLeft()!=null){myq.add(n.getLeft());}if(n.getRight()!=null){myq.add(n.getRight());}}}}public static void main(String[] args){binarySearchTree mytree = new binarySearchTree();int[] data={2,8,7,4,9,3,1,6,7,5};mytree.buildTree(data);mytree.inorder(mytree.root);System.out.println();mytree.layerTranverse(mytree.root);}}
0 0
- Java 二叉查找(排序)树 创建 以及中序和层序遍历
- Java 二叉查找(排序)树 创建 以及中序和层序遍历
- 二叉树的相关操作:创建、查找、求高度和深度、各种遍历(前、中、后、层序)等等
- 二叉查找树的层序遍历
- 二叉排序数(创建,插入,删除,查找及前序、中序、后序遍历)
- 二叉树的创建,先序、中序、后序遍历的递归实现以及层序遍历
- java编写二叉树以及前序遍历、中序遍历和后序遍历
- java编写二叉树以及前序遍历、中序遍历和后序遍历
- 通过前序遍历和中序遍历重建二叉树以及输出后序遍历(Java实现)
- C++二叉树之构造拷贝赋值,递归和非递归的前序遍历,中序遍历和后序遍历,以及层序遍历
- 先序遍历和中序遍历创建二叉树
- 二叉树遍历(已知中序和按层遍历求先序 递归)
- 二叉树遍历(flist) 中序和按层
- 二叉树的非递归中序遍历以及层序遍历实现
- 二叉树的前序,中序,后序和层序遍历java实现
- 二叉树创建及其遍历:前序、中序、后序、层序遍历等
- 我强大的二叉树(先序、层序创建,先序、中序、后序、层序遍历)
- 二叉树的创建、前/中/后序遍历、按层遍历C语言实现
- 百度地图开发(二) hello word
- IIC设备驱动程序(三)————IIC设备驱动程序的层次结构
- Mysql学习笔记八——子句查询
- Android图形显示系统(一)
- Md5是什么?MD5怎么校验?Md5校验工具怎么用?
- Java 二叉查找(排序)树 创建 以及中序和层序遍历
- Floodlight 用Static Flow Pusher 改变流表规则
- C# study2
- JavaScript入门
- 旋转数组的最小数字
- 算法结构与设计基础作业第九周
- 用原生js实现无缝轮播
- 二叉树的后序遍历
- open-falcon监控