JavaScript中,二叉树的三种遍历,及查找最小/大值,指定值,删除指定节点

我们上一篇写了一个简易二叉树的创建。

学习二叉树的创建也是对经典的数据结构又有了一定的了解,而很多数据结构也是从二叉树演化而来的
我们在看一次这种图

在这里插入图片描述

而我们学习创建二叉树的主要目的还是进行遍历,查找,操作这三大点。
那我们这次就先从遍历,查找开始
首先是三种遍历逻辑

重点!递归调用时 一开始传参的node为根节点,后面则会依次传入node.left,node.right !!下面的话语根节点也可能是node.right/left

遍历逻辑(比较抽象,因为是递归调用)
前序遍历 从根节点开始,打印当前节点,然后递归遍历左子树,然后打印当前节点,在递归遍历,直到遍历到叶子节点后返回上一层递归,在遍历右子树,
中序遍历 从根节点开始,如果有左孩子,则递归调用左孩子,然后没有就返回上一层打印节点,然后遍历右节点,中序遍历最后的输出结果为正序排序。
后序遍历 从跟节点开始,首先递归遍历左节点,直到为叶子节点,然后返回上一层在递归调用右节点,直到为叶子节点为止,然后返回上一层输出当前节点。这种方法根节点为最后输出。

最小/大值逻辑

首先我们从二叉树的创建就能看出,小节点在左边,那我们则可以这样,如果有左节点,则用循环一直访问当前节点的左节点,知道为null,此时当前节点的值就是最小值,最大值相反即可。
方法为min/max

查找指定值逻辑

比如我们查找一个在二叉树存在的值:1,

我们则先和根节点的值比较,如果小于当前跟节点则向左遍历,大于当前跟节点则向右遍历,如果等于则返回true,
这个时候我们查找一个不存在的值通过chrome最后可以看到root.node == null的情况,此时我们加个判断return false就可以了

删除节点(这个比较麻烦)还要保证删除节点后还是二叉树的数据结构。

有几种情况

<
实现逻辑
叶子节点 左右节点为空 这种就是直接赋值为null就行了
兄弟节点 有左边或者右边有节点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值