二叉树

世上树有万千种,唯有二叉纸上谈。

二进制:B
十进制:D
十六进制:H
神使用递归,人使用迭代(迭代的效率更高)
说了这么多,谈一下二叉树的定义。

二叉树的定义

在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。

二叉树的性质

  • 二叉树的第i层至多有2^{i-1}个结点;
  • 深度为k的二叉树至多有2^k-1个结点;
  • 对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。
    推导n_0=n_2+1:
    这里写图片描述
  • 具有n个节点的完全二叉树的深度为这里写图片描述
    推导
    这里写图片描述
    -性质5
    这里写图片描述

五个基本形态

这里写图片描述


满二叉树

完美的那是理想,不完美的才是人生。那我们来看一下满二叉树
一棵深度为k,且有2^k-1个节点称之为满二叉树;
特点:
1.叶子只能出现在最下一层
2.非叶子节点的度数都为2
3.在同样深度的二叉树中,满二叉树的节点个数一定最多,同时叶子也是最多。
这里写图片描述

完全二叉树

深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应时,称之为完全二叉树。
特点:
1.叶子节点只能出现在最下两层
2.最下层的叶子一定集中在左部连续的位置
3.倒数第二层,若有叶子节点,一定都在右部连续位置
4.如果节点度为1,则该节点只有左孩子。
5.同样节点数的二叉树,完全二叉树的深度最小
注:满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。

这里写图片描述

很二的二叉树是区分左右的,而我们前边说学的树是不区分左右的。
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二叉树是一种常见的数据结构,由节点和边组成。每个节点最多有两个子节点,分别称为左子节点和右子节点。 创建二叉树的方法有多种。一种常用的方法是使用链式存储结构,即每个节点含有数据和指向左右子节点的指针。我们可以通过递归的方式创建二叉树。 首先,我们需要定义一个二叉树节点的结构,包括数据和左右子节点的指针。然后,按照二叉树的性质,递归地创建节点。具体步骤如下: 1. 创建一个根节点,将根节点的数据填入。 2. 如果输入数据为空,表示当前节点为叶子节点,返回。 3. 从输入数据中取出左子节点的数据。 4. 创建左子节点,并将其指针赋值给根节点的左子节点指针。 5. 递归地调用创建二叉树的函数,将左子节点作为参数。 6. 从输入数据中取出右子节点的数据。 7. 创建右子节点,并将其指针赋值给根节点的右子节点指针。 8. 递归地调用创建二叉树的函数,将右子节点作为参数。 当所有节点都创建完成后,我们就得到了一颗二叉树。可以根据需要对二叉树进行遍历、插入、删除等操作。 需要注意的是,在创建二叉树时,输入数据需要按照特定的规则进行排序,以满足二叉树的性质。例如,如果输入数据是升序排列的,则创建出的二叉树将是一个平衡二叉搜索树。 所以,创建二叉树的过程就是递归地将输入数据分配到每个节点,并按照二叉树的性质建立节点之间的连接关系。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值