数据结构之二叉树

为什么要定义树这种数据结构?

线性表 和 链表 常见的两种数据结构。但是各有所长。
线性表顺序存储,通过下标随机访问元素十分方便.但是在删除和插入的时候比较困难。
链表一般不连续存储,查找元素必须遍历整个表,但是在插入删除的时候十分快捷。
折衷之下,树应运而生。


二叉树

二叉树的特点

每个节点最多只有两个子节点。二叉树的一个节点的值大于其左孩子的值,小于其右孩子的值(如果有的话)。
一棵二叉树最多拥有 2^n - 1个节点,最多有2^(n - 1)个叶子节点。n为树的高度。

二叉树节点的定义

class TreeNode{
    public int value;
    public TreeNode leftChild = null;
    public TreeNode rightChild = null;
    TreeNode( int value){//初始化方法
        this.value = value; 
    } 
        TreeNode(){}
}

二叉树插入操作

private TreeNode root;
public void insert(int value){
        TreeNode newNode = new TreeNode(value);
        if(root == null){
            root = newNode;
        }else{
            TreeNode current = root;
            TreeNode parent;
            while (true) {
                parent = current;
                if(value < parent.value){
                    current = current.leftChild;
                    if(current == null){
                        parent.leftChild = newNode;
                        return;
                    }
                }else{
                    current = current.rightChild;
                    if(current == null){
                        parent.rightChild = newNode;
                        return;
                    }
                }
            }
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,527评论 1 31
  • 二叉树的分类满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点。完全二叉树:除了最下面一层,其他...
    Super_亮仔阅读 772评论 0 0
  • 基于树实现的数据结构,具有两个核心特征: 逻辑结构:数据元素之间具有层次关系; 数据运算:操作方法具有Log级的平...
    yhthu阅读 4,380评论 1 5
  • 二叉树是数据结构中很重要的结构类型,学习数据结构也是深入学习编程的必由之路,这里我们简单介绍下我对于二叉树的理解,...
    sunxiaohang阅读 747评论 0 12
  • 马荣波、宫述滨、罗御程、侯云哲、胡义南、李敬坤、姚嘉睿今天我就不挨个点评了,从入营到今天已经过去三天了,你们三天的...
    自由教练阅读 337评论 1 1