自己动手作图深入理解二叉树、满二叉树及完全二叉树

文章目录背景概念结点二叉树二叉树的深度满二叉树完全二叉树完全二叉树的线性存储完全二叉树的创建与遍历背景二叉树是数据结构中的重点,也是难点。二叉树是一种非线性结构,比数组、栈、队列等线性结构相比复杂度更高,想要做到心中有“树”,需要自己动手画图、观察、思考,才能领会其真谛。该文将会结合图形,深入理解二叉树、满二叉树及完全二叉树的概念。概念结点结点是组成二叉树的最小单元。– 用图形表示– 用代码表示 // 结点 class Node<E> { E e;
摘要由CSDN通过智能技术生成

背景

二叉树是数据结构中的重点,也是难点。二叉树是一种非线性结构,比数组、栈、队列等线性结构相比复杂度更高,想要做到心中有“树”,需要自己动手画图、观察、思考,才能领会其真谛。该文将会结合图形,深入理解二叉树、满二叉树及完全二叉树的概念。

概念
结点
  • 结点是组成二叉树的最小单元。
    – 用图形表示
    在这里插入图片描述
    – 用代码表示
	// 结点
	class Node<E> {
   
        E e;
        Node left, right;

        Node(E e) {
   
            this.e= e;
            this.left = null;
            this.right = null;
        }
    }
二叉树
  • 每个结点的度(结点拥有的子树数目)不超过2的树叫做二叉树
    在这里插入图片描述
二叉树的深度
  • 结点的最大层次数称为树的深度或高度
    在这里插入图片描述
满二叉树
  • 指深度为k且有2k-1个结点的二叉树,即所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上。
  • 下图中深度为4,24-1=15个结点,且所有叶子都在第四层上。
    在这里插入图片描述
完全二叉树
  • 一颗深度为k的二叉树,k层的结点都是连续靠左并不可隔开的,并且1~k-1层的结点也组成了一棵满二叉树,这样的二叉树,我们称为完全二叉树。
    在这里插入图片描述
完全二叉树的线性存储
  • 出于简便起见,完全二叉树通常采用数组进行线性存储
    在这里插入图片描述
/**
 * 完全二叉树的线性存储
 *
 * @author zhuhuix
 * @date 2020-06-24
 */
public class FullBinaryTree {
   
    private Object[] arr;
    private int size;

    FullBinaryTree(int capacity) {
   
        this.arr = new Object[capacity + 1];
        this.size = 0;
    }

    public int getSize() {
   
        return this.size;
    }

    public boolean isEmpty() {
   
  • 19
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智慧zhuhuix

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

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

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

打赏作者

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

抵扣说明:

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

余额充值