二叉树 学习

1.0 理解基本概念

父节点(parent node)
左子节点(left child node)
右子节点(right child node)
左子树(left subtree)
右子树(right subtree)
根节点(root node):位于二叉树顶层的节点,没有父节点。
叶子节点(leaf node):没有子节点的节点,其两个指针均指向 None 。
节点所在的层(level):从顶至底递增,根节点所在层为 1。第n层的节点个数最多是2^(n-1)
二叉树的最大深度:我理解为节点的层的最大值。
节点的度(degree):节点的子节点的数量。在二叉树中,度的取值范围是 0、1、2 。

完美二叉树:也叫满二叉树,叶节点的度为0,其余所有节点的度都为2;若树的深度是n,则节点总数是 2^n - 1
完全二叉树(complete binary tree)只有最底层的节点未被填满,且最底层节点尽量靠左填充。
平衡二叉树(balanced binary tree)中任意节点的左子树和右子树的高度之差的绝对值不超过 1
二叉树的退化:极端情况,二叉树退化成一个链表

参考相关资料,个人认为,二叉树的最大深度和最大高度是一样,也是树的最大层数。则第n层的节点最都是2^(n-1)

 

 

1.1 理解递归

1.1.1 简单题目

104, 二叉树的最大深度 “使用 BFS 求解”
100, 相同的树
101, 对称的树
110, 平衡二叉树
199, 二叉树的右视图

236. 二叉树的最近公共祖先
235. 二叉搜索树的最近公共祖先

1.1.2  递归的进阶练习

112. 路径总和

105. 从前序与中序遍历序列构造二叉树       分析出原问题和子问题,然后用递归,明确“递”的边界条件

1.2 二叉树遍历

144. 二叉树的前序遍历
94. 二叉树的中序遍历
145. 二叉树的后序遍历
102. 二叉树的层序遍历

98. 验证二叉搜索树

总结:
0. 结合二叉树 理解 递归方法的使用和总结
1. 遍历方法 分为 BFS 和 DFS,BFS 使用队列结构进行记录;而DFS 又分为前序、中序、后序,都可以通过递归和迭代实现,迭代的方法要使用栈结构 保存 tree node。
2. 对于 队列和栈,使用C语言进行模拟,并提交代码,形成模板
3. python的deque 模块,要多了解和认识,可以熟练地使用deque 模拟队列和栈,处理二叉树的题目

posted @ 2024-10-09 09:49  靖意风  Views(41)  Comments(0)    收藏  举报