数据结构C++实现——二叉树

二叉树

二叉树的定义

  • 二叉树是结点的有限集合,该集合或者为空集,或者是由一个根和两棵互不相交的,称为该根的左子树和右子树的二叉树组成。
  • 二叉树可以是空集,也可以有空的左子树和右子树的二叉树组成
  • 树不能是空树,可以有空二叉树

二叉树的性质

  • 二叉树的第i层(假设根是第0层)则最多有2i个结点
  • 高度为h的二叉树至多2h个结点(根的高度为1)
  • 任意一颗二叉树,若叶子结点的个数为n0,度为2的结点的个数为n2,度为1的结点个数为n1,结点的总数为n。则必有n1+2n2=n-1(总结点减去根节点)同时n=n0+n1+n2
  • 包含n元素的二叉树高度至少为[log2(n+1]
  • 假定对一棵有n个结点的完全二叉树中的结点按照从上到下、从左到右的顺序排列0到n-1则有以下
    1. i=0该结点为二叉树的根
    2. i > 0则该结点的双亲序号为[(i-1)/2]
    3. 2i+1

二叉树ADT

ADT BTree{
数据:

运算:
    Create():构造一棵空的二叉树
    Destroy():撤销一棵空的二叉树
    IsEmpty():若二叉树为空则返回true非空返回false
    Clear():移去所有结点,成为空二叉树
    Root(x):若二叉树非空,则x为根的值,并返回true,否则返回false
    MakeTree(x,left,right):构造一棵二叉树,根的值为x,以left和right为左右子树
    BreakTree(x,left,right):拆分二叉树,x为根的值,left和right分别为原树的左右子树
    PreOrder(Visit):visit函数,先序遍历
    InOrder(Visit):visit函数,中序遍历
    PostOrder(Visit):visit函数,后序遍历

二叉树类

二叉树结点类

二叉树结点类
template<class T>
    struct BTNode
    {
        //三个构造函数
        BTNode(){lChild=rChild=NULL;}
        BTNode(const T& x)
        {
            element=x;
            lChild=rChild=NULL;
        }
        BTNode(const T& x,BTNode<T>* l,BTNode<T>* r)
        {
            element = x;lChild = l; rChild = r;
        }
        //三个数据成员
        T element;
        BTNode<T>* lChild,*rChild;
        };

二叉树类

二叉树类包含唯一的数据成员,它是指向一个二叉链表根结点的指针root

//二叉树类(先建立二叉树结点类)
    template<Class T
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值