数据结构之二叉树(1)二叉树基本知识
本栏目是自己在学习代码随想录二叉树做的总结,部分内容来自网站 https://programmercarl.com/ (代码随想录)
1 二叉树基本知识
1.1 二叉树定义:
一个简单的二叉树定义如上,一个父节点
,两个子节点,左边成为左节点
,右边成为右节点
,最上面的节点称为为根节点
,没有子节点的节点成为叶子节点
。
1.2 二叉树分类
(1)满二叉树
除最后一层外,所有的节点都有两个子节点
一个满二叉树
(2)完全二叉树
满二叉树最后一层从右往左删除若干节点
一个完全二叉树
(3)搜索二叉树
二叉树的左节点比根节点小且右节点比根节点大
搜索二叉树一个特点是中序遍历是有序数组,下一节介绍二叉树遍历的内容
(4)平衡二叉树
左右两棵子树的高度小于1
1.3 二叉树的代码表示
(1)链表表示法
class TreeNode {
public:
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int val) : val(val), left(nullptr), right(nullptr) {}
TreeNode(int val, TreeNode *left, TreeNode *right) : val(val), left(left), right(right) {}
};
(2)数组表示法
二叉树可以使用数组表示,从索引1开始存,左节点索引
2*i+1
,右节点索引2*i+2
下一节,二叉树的遍历