软件设计师备考知识06--树

简介: 呦西,又是一天。先来盘开胃菜:call by value(值传递)/call by reference(引用传递)1)往方法内传入int等基本类型变量,得到一个拷贝副本(形参),不影响原变量2)往方法内传入一个类对象,如StringBuffer...

呦西,又是一天。

先来盘开胃菜:

call by value(值传递)/call by reference(引用传递)

1)往方法内传入int等基本类型变量,得到一个拷贝副本(形参),不影响原变量

2)往方法内传入一个类对象,如StringBuffer,拷贝一个副本,此时形参与实参指向同一地址,用形参内方法修改形参内容,实参一起变化

吃了菜再来一棵树歇会(图片来源:二叉树的四种遍历方法笔记

1)树的类型

  1)满二叉树:2^k-1

  2)完全二叉树:除最后一层外,其他层均达到最大个数,深度:[log2n]+1

  3)二叉排序树:左子树节点值小于根节点,右子树节点大于根子树值

  4)平衡二叉树:空树/左子树和右子树的深度之差不超过1,且其左子树和右子树都是平衡二叉树

  5)线索二叉树:加上线索(指向节点前趋、后继的指针)的二叉树

例如:

img_c316801a3b4e66bc7576624e00b3a61e.png

6)最优二叉树(图片来源:哈夫曼树与哈夫曼编码):(哈夫曼树):权值为w1,w2,....wn的n个结点的二叉树中带全路径长度(所有叶子节点带权路径长度之和)最短的树:

构造方法:循环(升序排列,取出最小左左右子树,放入其和至排序中)

带权路径长度:(3+4+5)*3+(1+2)*4=49

img_abc664ae28a5a8b20dc0c0b6f52ed894.png
哈夫曼树
img_1987676c76221a47f236dbf0ad7b61df.png
替换权值

编码:例: C 00   E 010   D 011   B 10   A 11 

2)树的遍历

二叉树:时间复杂度O(n)

  1)先序遍历:先访问根节点,再遍历左子树、右子树

img_b037fc1918c557d4bf7ce3cc0a3a188d.jpe
先序遍历

2)中序遍历:先访问左子树,再遍历根节点、右子树

img_586b39a39a9a8413ed4092c13414ee71.png
中序遍历

3)后序遍历:先访问左子树,再遍历右子树、根节点


img_b8c2a57f4008c71a8cad7b2a4bf12a1f.png
后序遍历

树转二叉树


img_89bbbfc9f858777a3d31729f2395d436.png
树转二叉树

总结:

树的先根遍历(先访问根节点再按照从左到右的顺序遍历子树)与二叉树先序遍历一致

树的后根遍历(先按从左到右的顺序访问每一棵子树再遍历根节点)与二叉树中序遍历一致

森林的先序遍历即从左到右对树进行先根遍历

森林的后序遍历即从左到右对树进行后根遍历

img_a57aeb59e1fc392797443f16021e059d.png
森林转二叉树

3)二叉树的存储结构:

顺序存储结构:用一组连续的存储单元存储二叉树中的结点,缺:空间浪费


img_ae8adc5139fa6767d3c5c799e69e51ec.png
二叉树到改造后的完全二叉树
img_a9cefe3b0f18bfa0a5e1f9d1a3fe206e.png
存储状态

链式存储结构:用链表(二叉/三叉链表)来表示一棵二叉树(双亲表示法、孩子表示法、孩子兄弟表示法)

最后来一个甜点:

风险的优先级根据风险暴露设定

风险暴露又称风险曝光度=错误出现率(风险出现率)X错误造成损失(风险损失)

目录
相关文章
|
2月前
|
测试技术 uml 索引
软件设计师软考题目解析07 --每日五题
本文解析了五道软件设计师软考题目,包括系统测试的目标来源、UML图类型、文件系统索引节点管理、计算机系统软件层次以及HTML中<tr>标记的用途。
63 6
软件设计师软考题目解析07 --每日五题
|
2月前
|
Java 关系型数据库 MySQL
软件设计师软考题目解析05 --每日五题
本文解析了五道软件设计师软考的题目,包括面向对象中汽车与音乐系统的组成关系、类和对象的错误叙述、线性探查法构造哈希表、IP地址块包含的主机地址数以及医院数据库中科室与职工、病患与医生的联系类型。
41 5
软件设计师软考题目解析05 --每日五题
|
2月前
|
存储 监控 程序员
软件设计师软考题目解析04 --每日五题
本文解析了五道软件设计师软考的题目,包括数字音乐合成器中载波频率和信号幅度对乐音的影响、Cache与主存的地址映射、软件过程改进的错误叙述、软件质量属性中的吞吐量概念,以及程序语言支持链表对运行时数据空间的影响。
23 5
|
2月前
|
编解码 Java 编译器
软件设计师软考题目解析01 --每日五题
本文解析了五个软件设计师软考题目,包括模块内聚度的排序、递归调用的正确返回机制、流水线执行指令的特点、显示器垂直分辨率的定义以及CISC和RISC指令集的对比,最后作者分享了自己对Java市场的看法和个人职业规划。
24 3
|
2月前
|
存储 Java
软件设计师软考题目解析02 --每日五题
本文提供了五道软件设计师软考的题目解析,涉及专利权获取、模块内聚类型、子系统耦合、二叉树类型判断以及媒体类型分类,最后作者以幽默的方式分享了自己对精通Java的感受和对未来职业道路的展望。
18 2
|
2月前
|
安全 Windows
软件设计师软考题目解析03 --每日五题
本文解析了五道软件设计师软考的题目,包括软件项目风险、双端队列出队序列、数据流图中的错误分析、位图与矢量图的特点以及计算机感染特洛伊木马的现象,并分享了作者备考软考的心情。
22 2
|
2月前
|
算法 测试技术
软件设计师软考题目解析24 --每日五题
这篇文章提供了软件设计师软考的每日五题解析,包括测试用例设计、软件维护类型、路径覆盖测试、软件维护工具和系统改进等知识点。
29 0
软件设计师软考题目解析24 --每日五题
|
2月前
|
存储 芯片
软件设计师软考题目解析10 --每日五题
五道软考题目的解析,并提供了详细的答案和解题思路。
71 0
软件设计师软考题目解析10 --每日五题
|
2月前
|
网络协议 PHP
软件设计师软考题目解析21 --每日五题
每日五题解析,包括海明码纠错、POP3协议通信模式、中断处理、HTML邮件链接创建和结构化开发方法中的接口设计等知识点。
15 0
|
2月前
|
算法 Ruby
软件设计师软考题目解析18 --每日五题
这篇文章提供了软件设计师软考的每日五题解析,包括计算机指令周期、软件设计阶段、模块化原则、程序控制结构和软件项目规模确定等知识点。
31 0