数据结构——树(一)【树与二叉树】

树与二叉树

树的定义和性质

  树的概念:数据结构中把树枝分叉树、树叶、树根抽象为结点node),其中树根抽象为根节点root),且对一棵树来说最多存在一个根节点;把树叶概括为叶子结点leaf);把茎干和树枝同一抽象为edge)。树就被定义为由若干结点和若干边组成的数据结构,且在树中的结点不能被边连接成环。根节点置于最上方,然后向下延伸出若干条边到达子结点(child)(从而向下形成子树)。

  父亲结点、孩子结点、兄弟结点、祖先结点、子孙结点。

  ① 树可以没有结点,这种情况下把树称为空树empty tree)。
  ② 树的层次(layer)从根结点开始算起,即根结点为第一层。
  ③ 把结点的子树棵数称为结点的degree),而树中结点的最大的度称为树的度。
  ④ 对有n个结点的树,边数一定是n-1
  ⑤ 叶子结点被定义为度为0的结点。
  ⑥ 结点的深度depth)是指从根结点开始自顶向下逐层累加至该结点时的深度值;结点的高度height)是指从最底层叶子结点开始自底向上逐层累加。
  ⑦ 多棵树结合在一起称为森林forest)。

二叉树的递归定义

  二叉树的递归定义(从自身来定义自身):
  ① 要么二叉树没有根结点,是一棵空树。
  ② 要么二叉树由根结点、左子树、右子树组成,且左子树和右子树都是二叉树。

满二叉树

  每一层的结点个数都达到了当层能到达的最大结点数。

完全二叉树

  除了最下面一层之外,其余层的结点个数都达到了当层能达到的最大结点数,且最下面一层只从左至右连续存在若干结点。

二叉树的存储结构与基本操作

二叉树的存储结构

  二叉树使用链表来定义。二叉树的结点有两条出边,因此指针域变成了两个,把这种链表称为二叉链表。

struct node{
   
	typename data;//数据域
	node* lchild; //指向左子树根结点的指针
	node* rchild; 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值