数据结构基础(三)图论

定义:树是由n个节点组成的有限集合。 n=0,空树;n>0,1个根节点,m个互不相交的有限集,每个子集为根的子树。
非空树的特性:
1.有且仅有一个根节点
2.没有后继的结点称为“叶子结点”(或终端结点)
3.有后继的结点称为“分支结点”(或非终端结点)
4.除了根节点外,任何一个结点都有且仅有一个前驱
5.每个结点可以有0个或多个后继。

树的结构关系

结点
祖先结点:对于任何节点n ,它的祖先是位于根到节点n之间的路径上的节点。
子孙结点:一个结点含有的子树的根结点的子节点。
双亲结点:若一个结点含有子结点,则这个结点称为其子结点的父结点。
孩子结点:一个结点含有的子树的根结点称为该结点的子结点。
兄弟结点:具有相同父结点的结点互称为兄弟结点
堂兄弟结点:如果树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。

度:结点拥有的子树称为结点的度。

叶子(终端结点):度为0的结点称为终端结点或者是叶子。

分支结点(非终端结点):度不为0的结点称为分支结点或者是非终端结点。

孩子/双亲/兄弟:结点的子树称为该结点的孩子,相应的,该结点称为孩子的双亲,同一个双亲的孩子互称兄弟。

祖先/子孙结点的祖先是从根到该节点所经过的分支上的所有结点,反之,以某结点为根的子树中的任意结点都是该节点的子孙。

结点的层次:结点的层次从根开始算起,根为第一层,根的孩子为第二层……
树的深度:树中结点的最大层次称为树的深度或者是高度。

有序树/无序树:如果树中结点的各子树看成从左到右是有次序的(不能互换),则树称为有序树,否则称为无序树。

二叉树

二叉树:任意一个节点的子节点最多2个,且子节点的位置不可变换。
满二叉树:一棵深度为k且有2^k-1个结点的二叉树称为满二叉树。
满二叉树:如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。

二叉树的存储结构

由于顺序存储的空间利用率较低,因此二叉树一般都采用链式存储结构,用链表结点来存储二叉树。 在二叉树中,结点结构通常包括若干数据域和若干指针域,二叉链表至少包含3个域:数据域data、左指针域lchild和右指针域rchild。
111

二叉树层次遍历

33
层次遍历图 1 中的二叉树:
1.首先,根结点 1 入队;
2.根结点 1 出队,出队的同时,将左孩子 2 和右孩子 3 分别入队;
3.队头结点 2 出队,出队的同时,将结点 2 的左孩子 4 和右孩子 5 依次入队;
4.队头结点 3 出队,出队的同时,将结点 3 的左孩子 6 和右孩子 7 依次入队;
5.不断地循环,直至队列内为空。

哈夫曼树

定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小,则这棵树被称为哈夫曼树。

哈夫曼树的构建

构建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值