1.二叉树的定义:每个根节点只有两个子节点 struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int x):val(x),left(NULL),right(NULL){} }; 2.二叉树的分类 1.满二叉树:所有二叉树都具有左右节点,且左右两个子树的高度相等。 2.完全二叉树:只有最后一层的节点可以不满,并且每个子树的左节点必须有,右节点可以没有 3.二叉搜索树:节点处有值,并且左节点(存在的话)要小于根节点,右节点的值要大于根节点。每个子树也都符合 4.平衡二叉搜索树:在满足3的同时,保证左右子树的高度差不大于1.set,multiset,map,multimap底层都是这个之个, 3.二叉树的存储方式 二叉树的存储方式有两种,一个是链式存储用指针,一个是顺序存储用数组,按照根左右的方式。例如根节点在数组的下标为i,其左节点位2i+1,右节点是2i+2。 4.二叉树的遍历方式 分为前中后序遍历,注意,前中后指的是中间节点的遍历顺序,前序遍历:左中右。后序遍历:左右中。