NCRE Java Examination

NCRE Java Examination

Chapter 1 数据结构与算法

二叉树

满二叉树:是除了叶子结点外所有结点度数都为2的二叉树,当其有n个结点时,非叶子结点数为int(n/2)。

eg. 设一个棵满二叉树共有15个结点,则该满二叉树的叶子结点数为。

∼ L e a f   N o d e s = i n t ( n / 2 ) = i n t n 2 \sim Leaf\ Nodes=\rm{int}(n/2)=\rm{int}{{n}\over{2}} Leaf Nodes=int(n/2)=int2n
∼ L e a f   N o d e s = i n t ( n / 2 ) = i n t n 2 = i n t ( 15 / 2 ) = 7 \sim Leaf\ Nodes=\rm{int}(n/2)=\rm{int}{{n}\over{2}}=\rm{int}(15/2)=7 Leaf Nodes=int(n/2)=int2n=int(15/2)=7
T o t a l = 15 − ∼ L e a f   N o d e s = 15 − 7 = 8 Total=15-\sim Leaf\ Nodes=15-7=8 Total=15Leaf Nodes=157=8
###二叉树基本性质3: 对任意一棵二叉树,度为0的叶子节点总是比度为2的结点多一个。
####eg.在一棵二叉树中,叶子结点共有30个,度为1的结点共有40个,则该二叉树中的总结点数共有多少个。
度 为 2 = 度 为 0 − 1 = 30 − 1 = 29 {度为2}={度为0}-1=30-1=29 2=01=301=29
T o t a l = 30 + 29 + 40 = 99 Total=30+29+40=99 Total=30+29+40=99
###已知深度求叶子结点。
设:深度为k。
L e a f   N o d e s = 2 k − 1 Leaf\ Nodes=2^{k}-1 Leaf Nodes=2k1

###二叉树的前序遍历(DLR):在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且在遍历右子树时,上述规则同样适用,即“根-左-y”右。

###二叉树的中序遍历(LDR):访问根节点再访问左子树和右之间。

###后序遍历(LRD):访问左右子树之后再访问根结点。

###对长度为n的有序链表进行对分查找,最坏的情况下需要的比较次数为log2n

###二分法也称折半查找,用顺序存储的线性有序表适用二分查找。
###冒泡、简单选择排序、直接插入排序在最坏的情况下比较次数都是 0 ( n 2 ) 0(n^{2}) 0(n2),而堆排序的时间复杂度为 0 ( n log ⁡ 2 n ) 0(n\log_{2n}) 0(nlog2n),这也是堆排序的最大优点。
###简单选择排序的算法描述:前面的元素已经有序,扫描剩下的线性表,找到最小的元素,将它交换到剩余表的最前面,直到剩余表为空。
###堆排序是一种选择排序的算法,从它建堆开始,1.将序列表表示为完全二叉树 2.从第n/2个结点开始(最后一个结点的父亲)。如果该结点的孩子小与该结点,则将两个结点交换,交换后,如果该结点的子结点破坏了堆的条件,则递归交换。确保该结点的最后值都小于它的左右孩子 3.n-1 4.重复2、3步骤,直到最小值到大定点结点,并且满足堆的性质。
###冒泡排序在最坏的情况下比较次数为, n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2
###希尔排序, n 1.5 n^{1.5} n1.5
这里写图片描述

##程序设计基础
###面向对象基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值