【xsong说算法】第三期:手撕力扣二叉树

本文着重介绍二叉树算法,通过前序、中序、后序遍历建立思维框架,以二叉搜索树的合法性验证为例深入理解,同时提供一周内完成的LeetCode经典二叉树题目及解析,包括翻转二叉树、寻找重复子树等,助力提升算法技能,为动态规划奠定基础。鼓励读者实践并探讨更多二叉树操作,如BST的删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.1 前言

  看了很多别人总结的算法的笔记,他们都比较推荐在我们对算法无从下手的时候,去刷二叉树的题,因为二叉树类型的题能够培养我们的框架思维,为我们接下来刷动态规划类型打一个很好的基础。首先声明:该文章的侧重点是帮我们建立二叉树算法的类型体系,以便于我们熟能生巧,在面试中发挥的更好,对数据结构不做详细讲解。

二叉树的遍历:递归思想

//System.out.println(root.val);
void traverse(TreeNode root) {
    // 前序遍历
    //System.out.println(root.val);
    traverse(root.left)
    // 中序遍历
    //System.out.println(root.val);
    traverse(root.right)
    // 后序遍历
    //System.out.println(root.val);
}

3.2 验证二叉搜索树的合法性

boolean isBST(TreeNode root,TreeNode min,TreeNode max){
    //base case
    if(root == null){
        return ture;
    }
	
    if(min != null && root.val <= min)return false;
    if(max != null && root.val >= max)return false;
    return isBST(root.left,min,root) && isBST(root.right,root,max); 
}

3.3 带你刷 LeetCode 二叉树

下面的题都是我这周做的,然后写了比较详细的题解,东西基本都在题解里面了。

题目链接我的题解
【力扣】226.翻转二叉树我的题解
【力扣】652. 寻找重复的子树我的题解
【力扣】114. 二叉树展开为链表我的题解
【力扣】654. 最大二叉树我的题解
【力扣】105. 从前序与中序遍历序列构造二叉树我的题解
【力扣】106. 从中序与后序遍历序列构造二叉树我的题解
【力扣】230. 二叉搜索树中第K小的元素我的题解
【力扣】538. 把二叉搜索树转换为累加树我的题解

  至此,二叉树就讲到这里,如果你把上面的题都做完,并且认真总结的话,相信你一定会有很大的收获。上面的题是二叉树的经典题型,如果都掌握的话,建议去深入学习BST的一些操作,比如删除操作,如何在删除之后依旧维持他的稳定?等等…这里就不再过多讨论了。有什么问题可以私信我或者提出来,大家共同进步!加油!
ps:由于临近期末,这周我就更新这一期,计网还有其他专业课该好好复习了,不能挂科。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blog_xsong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值