基础
满二叉树:如果一棵树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵树为满二叉树。
完全二叉树:除了底层可能没填满,其余每层结点数都达到最大,并且最下面一层的结点都集中在该层最左边的若干位置。
二叉搜索树:是一颗有序树。
平衡二叉搜索树:空树或者他的左右两个子树的高度差不超过一,并且左右两个子树都是平衡二叉树。
深度优先遍历:
前序遍历:中左右
中序遍历:左中右
后序遍历:左右中
广度优先遍历:
层序遍历
二叉树的递归遍历
1、确定递归函数的参数和返回值
2、确定终止条件
3、确定单层递归的逻辑
二叉树的迭代遍历
前序遍历:先把根结点放入栈中,如果根结点又子节点,那么把右孩子入栈,再把左孩子入栈。如果没有子节点,就弹出栈。
中序遍历:先访问二叉树顶部结点,然后一层一层向下访问,直到到达树左面的最底部,再开始处理结点。
后序遍历:
统一迭代法:把要处理的结点放入栈之后,紧接着放入一个空指针作为标记。
二叉树的层序遍历
借助队列实现,队列先进先出,符合一层一层遍历的逻辑。
226.翻转二叉树
递归法:前序遍历,先交换左右子结点,然后翻转左子树,翻转右子树。
迭代法:遍历到该结点时,增加交换左右子结点的功能即可。
101.对称二叉树
判断二叉树是否对称其实是比较根节点的两个子树是不是相互翻转的。
比较二叉树外侧是否对称:其实是比较左子结点的的左子结点和右子结点的右子结点的值是否相同。
比较二叉树内侧是否对称:左结点的右结点和右子树的左结点。
104.二叉树的最大深度
深度:该结点到根结点的路径上的结点数
高度:该结点到叶子结点的路径上的结点数