数据结构复习 第十一章 二叉树和其他树

chapter 11 二叉树和其他树


  • 非空有限元素集合
    有一个元素是根
    其余元素组成子树

  • 二叉树
    高度 深度 级数
    度(孩子的个数)
    二叉树和树的区别
    二叉树可以为空,但树不能为空
    二叉树中每个元素都恰好有两棵子树(其中一个或两个可能为空),树可以有任意多个子树
    二叉树中每个元素的子树都是有序的,而数的子树是无序的

  • 二叉树的特性
    最大高度为n,最小为 log2(n+1)
    满二叉树:恰好有2h-1个元素
    完全二叉树:深度为k,前k-1层是满二叉树,第k层上都连续排列在第k层的左端

  • 二叉树的描述
    数组描述:按照二叉树对元素的编号方法,将元素存储在数组中

     **链表描述**:元素,左右孩子
    
  • 二叉树的常用操作
    确定其高度:dfs
    确定其元素数目:递归
    复制:递归
    显示二叉树:递归
    确定两棵二叉树是否一样:输出
    删除整棵树

  • 二叉树遍历
    前序遍历(根左右)
    中序遍历(左根右)
    后序遍历(左右根)
    层次遍历(队列)

  • 抽象数据类型
    empty()
    size()
    preOrder()
    inOrder()
    postOrder()
    LevelOrder()

  • 类linkedBinaryTree

  • 应用
    计算高度:递归,比较左右子树的高度,谁高选谁,基本条件是叶子节点高度为1
    森林:0或多可树
    首先得到每棵树的二叉树表示:第一个孩子为左孩子,兄弟为右孩子
    然后第i棵作为第i-1棵树的右子树
    并查集:find() union(a,b)
    规则
    重量规则(将重量重的作为父节点)
    高度原则(将高度高的作为父节点)
    紧凑路径(将路径上的节点都连到父节点)
    前序遍历的非递归实现(根左右)
    每遇到一个结点,先访问该节点,并把该结点的非空右孩子入栈,然后遍历其左孩子
    左子树遍历完后,从栈中弹出右子树的根,继续遍历
    中序遍历的非递归实现(左根右)
    每遇到一个结点就把它入栈,然后遍历其他左子树,遍历完左子树后,弹出栈顶节点并访问,按照右节点指示的地址访问右子树
    后序遍历的非递归实现
    每遇到一个结点就入栈,然后遍历左子树,遍历完左子树后,回到栈顶节点,按照右链遍历右子树,遍历完右子树后,弹出栈顶节点并访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Snow_yqh_LY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值