二叉树学习记录2

文章探讨了如何基于中序和前后序构造二叉树,以及如何构建最大二叉树和平衡二叉搜索树。此外,详细阐述了有序数组构造二叉搜索树的方法,以及涉及二叉树的各种操作,如合并、查找最近公共祖先、搜索、验证、插入、删除和修剪等。二叉搜索树的特性在解决这些问题时起到关键作用,如利用有序性优化搜索和插入操作。
摘要由CSDN通过智能技术生成

二叉树学习记录:

构造二叉树类:

1.从中序和后序、中序和前序构造二叉树:
必须有中序,否则无法区分一个节点的左子树和右子树

2.最大二叉树:

3.平衡二叉搜索树:

4.有序数组构造二叉搜索树

以上4题的思路基本是一致的,对于每次递归遍历数组,都要找到该数组中符合条件的头节点,然后根据逻辑重新划分左右区间数组,返回值为节点的指针。

递归类:

合并二叉树:
创建一个新的树或者把一棵树的节点值加到另一棵树上。

二叉树的最近公共祖先节点:
如果一个节点左或者右子树是目标之一,则返回该节点,如果不是返回空,
递归到上层如果左或者右有返回节点,由于是递归向上,即找到的第一个就是最近的。

二叉搜索树相关:

二叉搜索树是一类树,其每个节点的右子树的每个值都大于节点值,左子树的每个节点值都大于节点的节点值,其左右子树也都是二叉搜索树
1。利用这一特性可以减少很多递归
2。对于二叉搜索树,因为其是有序的,因此经常需要找相邻节点,此时双指针的思路比较好用。

遍历

1.二叉搜索树中的搜索:利用节点值的大小判断是在左还是右子树中找
普通二叉树:递归找,找到返回。

2.验证二叉搜索树:中序(左中右)遍历得到的应该是一个有序数组,可以检查其数组的有序性,也可以采用双指针比较。

3、最小绝对值差:
由于BST是有序的,因此最小绝对插值一定是相邻节点的元素,因此用双指针
普通二叉树:递归得到数组后sort ,然后找相邻元素。

4.众数:有序递归的一定是 相邻的,因此可以设置计数器,对于count==max的值存入结果集,如果有比这个max还大的,就清空结果集然后更新max。
普通二叉树:遍历得到哈希,然后比较其value。

5.二叉树转换为累加树
利用二叉搜索树的有序性,其从右下角递归到左下角是递减的,即右下角不用修改,左下角修改为全部元素的和,采用双指针递归两个相邻元素。

6.二叉搜索树的最近公共祖先
利用节点值判断省去一些递归

插入

5.在二叉搜索树中插入一个节点,递归的找到该节点所属位置的空节点并且插入。

修剪

最难的类型,要更改整个树的结构,即对于节点,递归的修建其左右子树,并且把修改后的左右子树返回到node->left和node->right。

根据子树节点的情况:
左右都无:删去该节点后只剩下空,返回空
左无:返回右
右无:返回左
都有:根据节点修改,左树应该是返回节点的左树,右树应该是返回节点,即找到左树最大节点的一个跨节点相邻最近节点。
在这里插入图片描述

删除二叉树中的节点:
修建二叉搜索树:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值