5-5 二分搜索树的遍历(深度优先遍历)

深度优先遍历的含义

首先尝试走到最深。

前序、中序、后序遍历的定义

遍历方式对遍历方式解释
前序遍历先访问当前节点,再依次递归访问左右子树。
中序遍历递归访问左子树,再访问自身、再递归访问右子树。
后序遍历递归访问左右子树,再访问自身节点。释放整个二叉树的时候会使用到后序遍历。

把握要点:访问当前节点的顺序是在前面、中间还是在后面。

其实,代码的实现是异常简单的!

遍历的顺序应该是下面这张图展示的样子。

图:二分搜索树的深度优先遍历

补充说明:仔细想想向二分搜索树中插入元素的过程,就明白了,为什么左子树中的所有元素小于根节点,右子树的所有元素大于根节点,并且二分搜索树中的 key 没有重复元素。

下面的图表多看几遍就明白了,千万不要忘记了对 node 是否为 null 的判断。下面用递归的方式编写前、中、后序遍历是十分简单的。它们的结构是完全相同的。

记忆要点:左右子树都是递归处理,树根是真正要执行的操作。
后序遍历的一个重要特点:前序和后序都访问完以后,才做操作。

可以看到,红色标注的部分是结构一致的。
中序遍历的重要结论:中序遍历可以将数据按照从小到大升序排列。
后序遍历的重要结论:后续遍历在空间释放的时候可以先释放左右节点,再释放自身。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值