当前位置: 首页 > 科技观察

Java编程内功——数据结构与算法“顺序二叉树”

时间:2023-03-18 15:03:32 科技观察

基本概念从数据存储的角度来看,数组存储方式和树存储方式可以相互转换,即数组可以转换成一棵树,树可以转换成数组。如下图所示:顺序存储二叉树的特点:顺序存储通常只考虑完全二叉树;第n个元素的左子节点为2*n+1;第n个元素的右子节点为2*n+2;n个元素的父节点为(n-1)/2;n表示二叉树的元素个数(上图数字从0开始);需求需要一个数组{1,2,3,4,5,6,7},需要先序遍历的形式遍历二叉树,前序遍历的结果应该是1,2,4,5,3,6,7,另外完成中序遍历和后序遍历。代码示例packagecom.xie.tree;/***@author:xiexiaofei*@date:2020-02-0920:04*@description:*/publicclassArrBinaryTreeDemo{publicstaticvoidmain(String[]args){int[]arr={1,2,3,4,5,6,7};ArrBinaryTreearrBinaryTree=newArrBinaryTree(arr);System.out.println("顺序存储二叉树的前序遍历数组");arrBinaryTree.preOrder(0);System。出去。println();System.out.println("顺序存储二叉树的中序遍历数组");arrBinaryTree.infixOrder(0);System.out.println();System.out.println("顺序存储后序二叉树的遍历数组");arrBinaryTree.postOrder(0);System.out.println();/***顺序存储二叉树的前序遍历数组*1245367*顺序存储二叉树的中序遍历数组*2451367*顺序存储二叉树的后序遍历数组*2453671*/}}//实现顺序存储二叉树遍历classArrBinaryTree{privateint[]arr;//存储数据节点数组publicArrBinaryTree(int[]arr){this.arr=arr;}/***写一个方法完成顺序存储的二叉树的前序遍历。**@paramindex数组下标*/publicvoidpreOrder(intindex){if(arr==null||arr.length==0){System.out.println("数组为空,无法按照二叉树");}//输出当前元素System.out.print(arr[index]+"");//左递归遍历if((2*index+1)