Java实现,手写二叉树

本文介绍了二叉树的基本概念,包括满二叉树、完全二叉树和二叉搜索树。接着探讨了树的两种存储方式,数组形式和链表形式,详细解析了二叉链表和三叉链表的结构特点,并强调了在实际应用中,二叉链表作为二叉树存储的常见选择。
摘要由CSDN通过智能技术生成

一、基本概念

  • 二叉树:每个节点最多有两个子树的结构;
  • 满二叉树:除了最后一层没有任何节点外,每一层的所有节点都有两个子节点的二叉树;
  • 完全二叉树:结构与满二叉树类似,不同点在于最后一层可以不满,但最后一层的节点必须连续集中再最左边;
  • 二叉搜索树:各节点的值有大小要求的二叉树,左节点的值<中节点的值<右节点的值。

二、树的存储方式

1、数组形式

        使用数组存储,有一个特点就是必须连续存储,根据树的结构,满二叉树和完全二叉树可以对树的元素从上到下,从左到右进行连续存储,但是对于一般的二叉树,必须进行完全化才可以进行数组存储。所谓的完全化,就是对于没有子节点的位置,使用null代替,构成完全二叉树的结构。那么问题就来了,使用null存储,也是会占用存储空间的,所以对树的存储方式,一般采取链表的形式。

2、链表形式

链表形式可以分为两类:二叉链表和三叉链表。

        二叉链表存储,包含三个信息,左孩子节点指针,右孩子节点指针,以及数据域。如果没有孩子节点,则将指针域置为NULL。使用二叉链表结构,一般会创建一个头节点,并将其中的左子树指向根节点,右子树为NULL,这样方便了后续的操作。

            三叉链表存储,除了含有二叉链表的结构外,还含有一个双亲节点指针域,指向它的双亲节点。这是典型的空间换时间的方法,如果涉及的操作需要频繁访问双亲节点,就建议使用三叉链表的存储结构。

        对于一般的二叉树而言,二叉链表存储是最简单有效的方式,也是推荐使用的。

三、树的实现

package com.cjs.bean;

public class Node {
    private int id;
    private int data;
    private Node leftChild;
    private Node rightChild;

    public Node() {
    }

    public Node(int id, int data, Node leftChild, Node rightChild) {
        this.id = id;
        this.data = data;
        this.leftChild = leftCh
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值