b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

二叉排序树建立(JAVA实现)

电脑杂谈  发布时间:2019-07-16 16:18:01  来源:网络整理

树和二叉树的区别_树与二叉树的转换_创建二叉排序树

给定一个数组nums和一个数字k,找出相差k的两个数,称这两个数位一对,并且每一对数组顺序不一样算同一种情况,求数组中有多少对。给定一个数组, 里面放置任意数量的随机数, 如何快速统计出数组中重复的数字以及出现次数。给定一个升序排列的自然数数组,数组中包含重复数字,例如:[1,2,2,3,4,4,4,5,6,7,7]。

考查的重点有:链表,二叉树前序、中序、后序遍历(递归,非递归),二叉树结点、层次的计算,树转二叉树,各种排序算法(冒泡排序。考查的重点有:链表,二叉树前序、中序、后序遍历(递归,非递归),二叉树结点、层次的计算,树转二叉树,各种排序算法(冒泡排序,快速排序,堆排序是重点)。二叉堆是最简单的堆结构,本质是一棵完全的二叉树,一般由数组实现,其父节点和左右子节点之间存在着这样的关系:索引为i(i从0开始)的左孩子的索引是 (2*i+1)。

以上构建的二叉排序树的算法代码如下:

1.1使用递归构造排序二叉树的方法:

[java]view plain

publicTreeSortBinaryTree(Treenode,inti){

if(node==null){

node=newTree(i);

创建二叉排序树_树与二叉树的转换_树和二叉树的区别

returnnode;

}

else{

if(i<=node.value){

node.left=SortBinaryTree(node.left,i);

}

else{

node.right=SortBinaryTree(node.right,i);

}

returnnode;

树和二叉树的区别_树与二叉树的转换_创建二叉排序树

}

}

1.2 使用上方方法,进行构建:

[java]view plain

intshuzu[]={3,1,2,5,0,7,9,8};

Treetree=realtree.newTree(shuzu[0]);//以3这个数为根节点

for(inti=1;i<shuzu.length;i++){

realtree.SortBinaryTree(tree,shuzu[i]);

}

代码很简单,逻辑清晰,如果觉得不保险,可用中序遍历遍历一遍,二叉排序树的中序遍历是递增的。

树和二叉树的区别_创建二叉排序树_树与二叉树的转换

2 第2种情况,如果给定一个随机的数组,我们需要建立一个高度最小的二叉排序树,我们应该怎么做:

首先,把给定的随机数组排个序,以升序的方式进行排序,ok,这个排序算法的代码就不写了。

然后 , 构造高度最小的二叉排序树,高度最小意味着左子树和右子树的高度基本相等,所以我们会想,首先我们以排序好的数组的中间数为根节点创建二叉排序树,然后中间数的左边是左子树,右边是右子树,然后在对中间数的左边的数再取中间数以它为上一个根节点的左子树,依次类推创建二叉排序树,来构建。

还是以上面的数组进行 a[] = {3,1,2,5,0,7,9,8}进行升序排序后为 a[ ] = {0,1,2,3,5,7,8,9},二叉排序树:中间数为3以它为根节点:如下:

2.1 最小高度的二叉排序树所对应的算法代码如下:

[java]view plain

inlineintmax(inta,intb){returna>b。inta:=inta*10。}intshardingindex(inta){intp=hash(a)。

if(end<start){

树和二叉树的区别_创建二叉排序树_树与二叉树的转换

returnnull;

}

intmin=(start+end)/2;

Treetree=newTree(a[min]);

tree.left=createminheighttree(a,start,min-1);

tree.right=createminheighttree(a,min+1,end);

returntree;

}

2.2 使用上述方法进行构建:

[java]view plain

if (row < 0 || row > boxes.length - 1 || col < 0 || col > boxes[0].length - 1) {。if (t.borderleftwidth.length==0 || t.bordertopwidth.length==0 || t.borderrightwidth.length==0 || t.borderbottomwidth.length==0){。if (t.borderleftwidth.length == 0 || t.bordertopwidth.length == 0 || t.borderrightwidth.length == 0 || t.borderbottomwidth.length == 0) {。

以上就是两种构建排序二叉树的方法,如果哪里有错,请告知,或者方法笨拙,还有更好的方法,可以互相讨论。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-113479-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      每日福利
      热点图片
      拼命载入中...