理论基础:
种类:
满二叉树:k是深度,节点数是2 ** k - 1,如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上
完全二叉树:除了底层以外,其他节点都是满的,底层一定是从左到右连续的
满二叉树一定是完全二叉树
二叉搜索树:左子树小于中间节点,右子树大于中间节点
平衡二叉搜索树:左子树和右子树的深度差不能超过1
存储方式:
链式存储:二叉树可以理解为一个链表
顺序存储:
遍历方式:
深度优先遍历(递归法、迭代法):先往深度方向走,遇到叶子节点再回退
- 前序遍历:中左右
- 中序遍历:左中右
- 后序遍历:左右中
广度优先遍历:
- 层序遍历(迭代法):一层一层地遍历
定义方式:
public Class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) {this.val = val;}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
加油!