算法导论--二叉树

本文介绍了二叉搜索树的基本概念,包括前序、中序和后序遍历。重点讨论了中序遍历实现有序输出的特点,以及如何在O(h)时间复杂度内进行搜索、求最小值和最大值的操作。此外,还探讨了插入和删除节点的策略,以保持二叉搜索树的特性。

搜索树这个数据结果支持很多动态的操作:搜索、最小值啦、最大值,插入和删除,当然也可以作为词典以及优先级队列。

啥是二叉搜索树

这里写图片描述

上图便是二叉搜索树,一个父节点最大分两个叉,并且左孩子子树的所有节点小于等于父节点,右孩子子树的所有节点大于等于父节点。

这样就可以通过访问根节点顺序的不同递归遍历这样的二叉搜索树,这就是我们所熟知的:前序遍历,中序遍历,后序遍历。
这里写图片描述
上图伪代码是中序遍历,其实中序遍历二叉搜索树,就是按从小到大的顺序输出了各个元素,时间复杂是O(n),为什么呢,走直觉啊,其实证明也不难啦,自己去看看书里面人家公式是怎么推得就明白了。

访问二叉搜索树

我们经常需要搜索一个二叉搜索树。比如找到树种的最小值、最大值什么的,这里介绍一下这些操作是怎么用O(h)的时间来进行这些操作的,其中h是树的高度。
搜索:
用一个key值去查找中这个key值得元素。给定一个根节点的指针和一个Key k, TREE-SEARCH返回key=k的节点,如果不存在,返回NULL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值