数据结构和算法学习--二叉树

二叉树:二叉树的定义比较广泛,只要每个结点的孩子结点的数量不大于2,那就是二叉树。二叉树可为空二叉树。左子树和右子树是有顺序的,不能颠倒。即使树中某个结点只有一棵子树,也要区分是左子树还是右子树
一定要注意二叉树的左右子树的顺序。
二叉树的五种基本形式:
1.空二叉树
2.只有一个根节点
3.根节点只有左子树
4.根节点只有右子树
5.根节点有左子树也有右子树

特殊二叉树:
斜二叉树:只有左子树或只有右子树
满二叉树:所有分支结点都存在左右子树
满二叉树特点:1.所有叶子结点都在一层 2.非叶子结点的度都是2 3.在同样深度的二叉树中满二叉树的结点个数和叶子个数是最多的。

完全二叉树:编号连续的二叉树(定义不短,按图理解就行)。完全二叉树的叶子节点只能出现在最下两层。最下层的叶子一定集中在左部连续位置。
满二叉树是完全二叉树,完全二叉树不一定是满二叉树。

二叉树的性质:
1.二叉树的第i层,最多有2的i-1次幂个结点
2.二叉树最多有2的i次幂-1个结点
3.对任一二叉树,如果其终端节点数为n0,度为2的节点数为n2,则n0=n2+1
推导:假设度为1的结点数位n1,则总节点数n=n0+n1+n2,各节点间的连接数为n1+n22,所以n-1=n1+n2 所以 n0+n1+n2-1=n1+n2+n2.最后n0=n2+1
4.具有n个结点的完全二叉树的深度为( log以2为底n的对数)向下取整+1
具有n个结点的满二叉树的深度为(log以2为底n+1的对数)

树结构存储形式很多。首先二叉树能用一维数组存放二叉树中的结点,从上到下依次每层,每层从左到右开始依次编号存放,若其中某个结点不存在则该下标为空。

二叉树的链表表示–二叉链表。每个节点有一个数据域和两个指针,分别指向其左右孩子结点。

二叉树的遍历:从根节点出发,按某种次序依次访问二叉树中的所有结点,使得每个节点被访问一次且仅被访问一次。
二叉树的遍历方法可以有很多,如果我们限制了从左到右的习惯方式,可主要分为:前序遍历、中序遍历、后序遍历、层序遍历。
前序遍历:若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树,再前序遍历右子树。
中序遍历:若树为空,则空操作返回,否则从根节点开始(注意:并不是先访问根节点),中序遍历根节点的左子树,之后访问根节点,最后中序遍历右子树
后序遍历:若树为空,则空操作返回,否则从左到右先叶子后节点的方式遍历访问左右子树,最后访问根节点。
层序遍历:从根结点为第一次,从上到下从左到右依次遍历。
前中后就是指根节点在哪个次序遍历的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值