26、编程高级主题深度解析

编程高级主题深度解析

1. 二叉树的构建与搜索

1.1 二叉树构建与顺序的关系

当向二叉树中添加单词列表时,树的形状会受到数据添加顺序的影响。例如,若“coulomb”是列表中的第一个单词,构建出的二叉树将没有左子节点,严重向右倾斜;若“yokel”是首个输入的单词,树的形态也会不同。随机数据且起始值接近平均值时,能构建出平衡的二叉树;而按字母顺序输入单词,最终得到的二叉树会类似链表。

1.2 二叉树搜索

将单词列表存储在二叉树后,下一步就是在树中查找单词,即搜索树。以查找“tortuous”为例,搜索步骤如下:
1. 从根节点“opulent”开始,比较“tortuous”和“opulent”。
2. 由于“tortuous”大于“opulent”,沿着右指针找到“salubrious”。
3. 继续按此算法,依次找到“yokel”,最终找到“tortuous”。

与链表搜索相比,二叉树搜索通常更快。链表搜索需逐个遍历节点,平均要检查列表的一半节点。例如,100 个节点的链表平均要检查 50 个节点,1000 个节点的链表平均要检查 500 个节点,最坏情况下要检查所有节点。而在平衡二叉树中,每次检查节点可将搜索空间减半,最大搜索节点数约为$log_2n$($n$为树中节点数),平均搜索$log_2n/2$个节点。如 100 个节点的树平均搜索 3.32 个节点,1000 个节点的树平均检查约 5 个节点。

1.3 非键值搜索与递归

并非总是基于键来搜索树。例如,树中存储美国总统的姓名和出生日期,且以总统姓氏为键构建树,若要列出所有 7 月出生的总统,按字母

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值