树是一种元素之间存在一对多关系的数据结构。常用于表示组织结构、辅助排序、查找等。根在上,枝在下,一般以倒悬树的形式显示。
根:树的最顶层的元素,只能有一个。
双亲:元素的上一层元素
孩子:元素的下一层元素
度:孩子的数量,
深度:树的层数
密度:树的元素个数
结点:一个元素的存储点
二叉树
1、普通二叉树:节点随意放没有顺序
2、完全二叉树:从左往右放,只能缺最后一层,并且只能缺右边
3、满二叉树:从左往右放,全放满,节点数 = 2^k -1
4、有序二叉树:左孩子都比节点小,右子树都比节点大
5、平衡二叉树:左右深度相差不能超过1层的有序二叉树
树的遍历:
1、前序遍历:根 左 右
2、中序遍历:左 根 右
3、后序遍历:左 右 根
//以下是中序遍历的代码:
void _in_show(TreeNode* root)
{
if(NULL == root) return;//设置递归的出口
_in_show(root->left);
printf("%d “,root->data);
_in_show(root->right);
}
//函数的入口
void in_show(TreeNode* root)//root为根节点
{
if(NULL == root) return;//如果根节点不存在
_in_show(root);//调用递归函数