二叉树题目几个重点:
1. 理解递归,优先掌握递归实现
递归三部曲:1.确定递归函数的参数和返回类型;2.确定终止条件 ;3.确定递归逻辑
因为递归一层一层对我来说有点绕,主要感悟就是只针对某一个节点思考,把属于这个节点的逻辑思考清楚(就是确认好单层递归的逻辑就可以了)
2. 区分深度和高度
-
深度(Depth): 一个节点的深度指的是从根节点到该节点的唯一路径上经过的边的数量。根节点的深度为0,它的子节点的深度为1,以此类推。一个节点的深度可以用来表示该节点在树中的层级关系。
-
高度(Height): 二叉树的高度是指从根节点到最远叶子节点的最长路径上经过的边的数量。换句话说,它表示了树的最深层级。如果树只有一个节点,那么它的高度为0。对于一个空树,高度通常被定义为-1。
- 树中的每个节点都有一个深度,但树的高度是所有节点深度中的最大值。
3. 掌握满二叉树,完全二叉树,平衡二叉树,二叉搜索树的性质
满二叉树:
一棵二叉树只有度为0和度为2的节点,且度为0的节点在同一层上,那么此树为满二叉树。
完全二叉树:
除了最底层可能没有填满,其他层都填满了,且最底层的节点分布在左边的若干位置
平衡二叉树:
也称为AVL树,每个节点的左右子树高度差的绝对值不超过1
二叉搜索树:
对于每一个节点,它的左子树的值都小于根节点的值,右子树的值都大于根节点的值,同时左子树和右子树也是二叉搜索树