数据结构-二叉树[递归实现]
一、二叉树概念
1.定义
二叉树(Binary Tree)是n(n不小于0)个节点组成的有限集合,且满足以下条件之一
(1)n=0时,为空二叉树(无节点)
(2)n>0时,为非空二叉树,由一个根节点和两颗互不相交的子树(左子树,右子树)的二叉树构成
2.常见的二叉树
(1)斜树
所有节点只有左子树或者右子树的二叉树
(2)满二叉树
深度为k,具有2^k-1个节点的二叉树
(3)完全二叉树
具有n个节点,深度为k的二叉树,并且层次编号为i的节点与同样深度的满二叉树的编号为i的节点位置完全相同
二、二叉树的链式储存(递归实现)
1.二叉链表
struct Bt_Node
{
T Data;//节点数据,T为数据类型
Bt_Node* Left_Child;//左孩子节点
Bt_Node* Right_Child;//右孩子节点
};
2.二叉树的构造
采用先序遍历的方法构造二叉树
int Binary_tree<T>::Create_BTree(Bt_Node<T>* &Tree) //为了递归实现构造,将私有数据Tree作为该创建递归函数的引用参数
{
T data;
cin >> data;
if (data == -1) //-1代表空树
Tree = NULL;
else
{
Tree = new Bt_Node<T>;
Tree->Data = data;
Create_BTree(Tree->Left_Child);//创建左子树
Create_BTree(Tree->Right_Child);//创建右子树
}
return 0;
}
3.二叉树的析构
和链表一样,从上的节点开始释放节点空间,注意