数据结构-二叉排序树的实现和深度优先算法
来源:互联网 发布:linux密码忘记 编辑:程序博客网 时间:2024/06/03 18:06
树和二叉树的区别:树种节点的最大度数没有限制,二叉树节点的最大度数为2。二叉树的节点有左右之分,也就是是有序树。
一个深度为K的满二叉树,包含了2^k-1个节点。完全二叉树是左边或者右边缺少若干连续的节点。
二叉排序树:如果左子树不为空左子树的节点都小于根节点,右子树反之,左右子树也分别为二叉排序树。
深度优先算法:有三种:
先序遍历:OLR o是root L是left R是right
中序遍历:LOR
后序遍历:LRO
因为二叉树定义本身就有递归性,所有深度优先算法非常方便的使用递归来实现每个节点的遍历。
Java代码:这里只实现先序遍历
/* * 二叉树插入数据和深度优先算法 */public class BinaryTree {public static void main(String[] args) {BinaryTree b=new BinaryTree();int []data={2,8,7,4,9,3,1,6,7,5};b.BuildTree(data);b.firOrder();} private Node root; //根节点为空 public BinaryTree(){ root=null; } //将数据插入到二叉树中 public void insert(int data){ Node node=new Node(data); //根节点为空,则数据充当根节点 if(root==null){ root=node; }else{ Node cuurent=root; Node parent; //循环遍历来将元素插入到合适位置 while (true) {parent=cuurent;//将元素小于父节点的元素放入到左子树上if(data<cuurent.data){//将下面的节点保存下来,如果节点不为空,则继续遍历下一个节点cuurent=cuurent.left;//如果该节点空就放入到该节点上面if(cuurent==null){parent.left=node;return;}}else {//将元素大于父节点的元素放入到右子树上cuurent=cuurent.right;if(cuurent==null){parent.right=node;return;}}} } } /* * 将数据输入到二叉树里面 */ public void BuildTree(int []data){ for(int i=0;i<data.length;i++){ insert(data[i]); } } /* * 深度优先算法里面的先序遍历方法递归实现 */ public void firOrder(){ this.firOrder(this.root); } public void firOrder(Node localRoot){ if(localRoot!=null){ //先输出根节点 System.out.print(localRoot.data+" "); //左子树节点 firOrder(localRoot.left); //右子树节点 firOrder(localRoot.right); } }}/* * 链表实现二叉树 */class Node{public int data;public Node left;public Node right;public Node(int data){this.data=data;this.left=left;this.right=right;}}
阅读全文
1 0
- 数据结构-二叉排序树的实现和深度优先算法
- 数据结构和算法之:图的深度优先和广度优先遍历及其Java实现
- 数据结构中的赫夫曼树编码,KMP算法,图的深度优先遍历和广度优先遍历
- Java实现图的深度和广度优先遍历算法
- 数据结构--图的理解:深度优先和广度优先遍历及其 Java 实现
- 图的深度优先搜索和广度优先搜索算法、最小生成树两种算法 --C++实现
- 数据结构 - 二叉排序树的实现
- 数据结构---图的广度优先遍历和深度优先遍历
- 数据结构-二叉树的深度优先和广度优先遍历
- 深度优先、广度优先和A*算法实现的重排九宫问题
- 二叉树深度优先(DFS)和广度优先(BFS)算法的非递归实现
- 【深度优先搜索(DFS)算法】数据结构之图的深度优先搜索算法DFS初试
- 一步一步复习数据结构和算法基础-深度优先搜索
- 算法与数据结构实验5:图的深度和广度优先遍历(邻接矩阵)
- 二叉排序树的构造、深度优先遍历、广度优先遍历
- 数据结构与算法专题之图——图的遍历(深度优先遍历和广度优先遍历)
- 【自己动手写数据结构】 -- 图的深度优先搜索算法
- 数据结构算法(2) 图的深度优先搜索
- github上开源的优秀android项目
- Java面向对象编程课程总复习
- Linux 下zip包的压缩与解压
- Android(2)工程相关目录介绍
- ssh框架搭建
- 数据结构-二叉排序树的实现和深度优先算法
- AOP的实现原理
- 操作系统(Operating System)Linux1
- 多元线性回归分析理论详解及SPSS结果分析
- 《Git学习笔记》
- c++实验6项目2
- YiqiangXu的博客 - CSDN博客
- awk使用方法
- 使用HttpURLConnection来获取状态码