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:由于临近期末,这周我就更新这一期,计网还有其他专业课该好好复习了,不能挂科。