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 二叉树
下面的题都是我这周做的,然后写了比较详细的题解,东西基本都在题解里面了。
至此,二叉树就讲到这里,如果你把上面的题都做完,并且认真总结的话,相信你一定会有很大的收获。上面的题是二叉树的经典题型,如果都掌握的话,建议去深入学习 BST 的一些操作,比如删除操作,如何在删除之后依旧维持他的稳定?等等...这里就不再过多讨论了。有什么问题可以私信我或者提出来,大家共同进步!加油!
ps:由于临近期末,这周我就更新这一期,计网还有其他专业课该好好复习了,不能挂科。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于