数据结构之二分搜索树(六)

二分搜索树是二叉树的一种。

二叉树就是有左右节点,有唯一根节点的树类数据结构。二叉树具有天然递归结构,每个父亲节点的左右子树也是二叉树

class Node{

  E e;

  Node left;

  Node right;

}

上图是一个满二分搜索树,但用的时候不一定是满的, 符合条件就行。所以存储的元素必须具有可比较性(对于对象,可以自定义比较规则)。继承Comparable接口

二分搜索树新增节点

//添加一个节点
    public void add(E e) {
        root = add(root,e);
    }

    private Node add(BST<E>.Node node, E e) {
        // TODO Auto-generated method stub
        if(node == null) {
            node = new Node(e);
            return node;
        }else{
            if(e.compareTo(node.e)<0) {
                node.left = add(node.left,e);
            }else if(e.compareTo(node.e)>0) {
                node.right = add(node.right,e);
            }
        }
        return node;
    }

二分搜索数的遍历

1.前序遍历

//前序遍历,传入根节点,然后通过左右节点和递归思想进行遍历
    public void preOrder(Node node) {
        if(node == null) {
            System.out.println("null");
            return;
        }
        System.out.println(node.e);
        preOrder(node.left);
        preOrder(node.right);
    }

2.中序遍历

//中序遍历
    public void inOrder(Node node) {
        if(node == null) {
            System.out.println("null");
            return;
        }
        inOrder(node.left); //左中右
        System.out.println(node.e);
        inOrder(node.right);
    }

3.后序遍历,道理都一样的,这里不写了。

原文地址:https://www.cnblogs.com/onlyzhangmeng/p/12099613.html

时间: 2024-10-03 08:13:01

数据结构之二分搜索树(六)的相关文章

第二十六篇 玩转数据结构——二分搜索树

1.. 二叉树 跟链表一样,二叉树也是一种动态数据结构,即,不需要在创建时指定大小. 跟链表不同的是,二叉树中的每个节点,除了要存放元素e,它还有两个指向其它节点的引用,分别用Node left和Node right来表示. 类似的,如果每个节点中有3个指向其它节点的引用,就称其为"三叉树"... 二叉树具有唯一的根节点. 二叉树中每个节点最多指向其它的两个节点,我们称这两个节点为"左孩子"和"右孩子",即每个节点最多有两个孩子. 一个孩子都没有

玩转数据结构——二分搜索树基础

一.树结构本身是一种天然的组织结构 将数据使用树结构后,出奇的高效. 二.二叉树 和链表一样,动态数据结构 class Node{ E e; Node left; Node right; } 二叉树(多叉树) 二叉树具有唯一根节点 class Node{ E e; Node left; <-- 左孩子 Node right; <-- 右孩子 } 二叉树每个节点最多有两个孩子节点 二叉树每个节点最多有一个父节点 二叉树具有天然递归结构 每个节点的左子树也是二叉树 每个节点的右子树也是二叉树 二叉

玩转数据结构:第6章 二分搜索树

二分搜索树 6-1 为什么要研究树结构 树结构 为什么要有树结构? 树结构本身是一种天然的组织结构 高效 将数据使用树结构存储后,出奇的高效. 二分搜索树(Binary Search Tree) 平衡二叉树:AVL:红黑树 堆:并查集 线段树:Trie(字典树,前缀树) 6-2 二分搜索树基础 和链表一样,动态数据结构. 二叉树,具有天然递归结构. 每个节点的左子树也是二叉树 每个节点的右子树也是二叉树 二叉树每个节点最多有一个父亲 二分搜索树 Binary Search Tree 二分搜索树是

数据结构之二分查找树总结

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 二分查找树BST(也叫二叉查找树.二叉排序树)的提出是为了提供查找效率,之所以称为二分查找树,因为该二叉树对应着二分查找算法,查找平均的时间复杂度为o(logn),所以该数据结构的提出是为了提高查找效率. 定义 二分查找树或者是一棵空树,或者具有下列性质: 1.若它的左子树不为空,则左子树上所有结点的值均小于根结点的值: 2.若它的右子树不为空,则右子树上所有结点的值均大于根结点的值: 3.它的左右子树均为二分查找树. 操作 二分查找树的操作主

6-5、6、7... 二分搜索树的查询操作、前序遍历

二分搜索树的contains方法实现逻辑如下: 1 // 看二分搜索树中是否包含元素e 2 public boolean contains(E e){ 3 return contains(root, e); 4 } 5 6 // 看以node为根的二分搜索树中是否包含元素e, 递归算法 7 private boolean contains(Node node, E e){ 8 9 if(node == null) 10 return false; 11 12 if(e.compareTo(nod

二分搜索树(Binary Search Tree)

目录 什么是二叉树? 什么是二分搜索树? 二分搜索树的基本操作 二分搜索树添加新元素 二分搜索树的遍历(包含非递归实现) 删除二分搜索树中的元素 什么是二叉树? ??在实现二分搜索树之前,我们先思考一下,为什么要有树这种数据结构呢?我们通过企业的组织机构.文件存储.数据库索引等这些常见的应用会发现,将数据使用树结构存储后,会出奇的高效,树结构本身是一种天然的组织结构.常见的树结构有:二分搜索树.平衡二叉树(常见的平衡二叉树有AVL和红黑树).堆.并查集.线段树.Trie等.Trie又叫字典树或前

数据结构——二叉搜索树、B树、B-树

数据结构——二叉搜索树.B树.B-树 1. 综述 二叉排序树(Binary Sort Tree),又叫二叉查找树(Binary Search Tree),也叫二叉排序树. 二叉搜索树满足以下性质: 1. 若根节点左子树不为空,则左子树上的所有节点均小于根节点: 2. 若根节点右子树不为空,则右子树上的所有节点均大于根节点: 3. 其左右子树也是二叉搜索树(递归定义): 4. 没有键值相等的点. B树就是B-树.B树/B-树英文叫B-Tree,可能被不小心翻译成了B-树.

46. 蛤蟆的数据结构笔记之四十六普里姆算法

46. 蛤蟆的数据结构笔记之四十六普里姆算法 本篇名言:"手莫伸 ,伸手必被捉.党与人民在监督 ,万目睽睽难逃脱.汝言惧捉手不伸 ,他道不伸能自觉 , 其实想伸不敢伸 ,人民咫尺手自缩.-- 陈毅" 连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边.所谓的最小成本,就是n个顶点,用n-1条边把一个连通图连接起来,并且使得权值的和最小.构造连通网的最小代价生成树,即最小生成树(Minimum Cost Spanning Tree). 找连通图的最

并行二分搜索树bianry search tree

二分搜索树是一种设计良好的有序集合,在平衡的情况下,查找search,插入insertion,删除deletion都具有O(logn)的计算时间.本文讨论实现二分搜索树的具体细节. 二分搜索树的每个结点包含key域,以及至多两个孩子结点,并且左孩子小于当前结点的值,右孩子大于当前结点值.为了方便操作,每个结点还需要维护父结点的信息.从上面的描述可以看出,二分搜索树的任何一个子树同样也是二分搜索树. 搜索操作是所有操作的基础.搜索操作可以很容易用递归过程描述:key>cur.key,则搜索右子树: