熟悉的二叉树
二叉树分类
满二叉树:树中只有度为2和度为0的节点,且度为0的节点都在最后一层上的树称为满二叉树
完全二叉树:
只有最后一层节点不满外,其他层的节点都是满的,且最后一层的所有节点都靠向左侧,完全二叉树的节点个数为2^n-1+(最后一层的节点数)
二叉搜索树:树中的每棵子树的左子树的所有节点值均小于根节点,右子树的所有节点值大于根节点
平衡二叉树:树中的每棵子树的左右子树高度的绝对值不超过1
二叉树存储方式
二叉树可以为链式存储,可以为线性存储。顺序存储的元素在内存是连续分布的,而链式存储则是通过指针把分布在各个地址的节点串联一起。
链式存储:
顺序存储:
用数组来存储二叉树如何遍历的呢?
如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 + 1,右孩子就是 i * 2 + 2。
但是用链式表示的二叉树,更有利于我们理解,所以一般我们都是用链式存储二叉树。
二叉树的遍历方式
二叉树的遍历分为深度遍历和广度遍历:
深度遍历:
- 前序遍历(中左右)— 迭代、递归
- 中序遍历(左中右)— 迭代、递归
- 后序遍历(左右中)— 迭代、递归
广度遍历: - 层次遍历— 迭代
二叉树的定义
java:
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;
}
}
二叉树相关题目: