前两篇文章我们学习了一些树的基本概念以及常用操作,本篇我们了解一下二叉树的一种特殊形式:二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。
一、二叉排序树定义二叉排序树或者是一颗空树,或者是具有下列性质的二叉树:
若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值
若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值
它的左,右子树也分别为二叉排序树
也就是说二叉排序树中左子树结点值均小于根结点值,右子树节点值均大于跟节点值,左右子树同样满足上述约定。
如下图,即为一颗二叉排序树:
由二叉树定义知道,我们通过中序遍历二叉树就可以按照从小到大顺序排列二叉树中所有元素。
如上图中序遍历结果为:35, 40, 42, 45, 50, 67
二、java代码实现二叉排序树核心方法下面我们通过java代码实现二叉排序树中的几个核心方法
我们先看下每个结点类定义如下:
1class TreeNode{ 2 private int data; 3 private TreeNode leftChild; 4 private TreeNode rightChild; 5 private TreeNode parent; 6 7 public TreeNode(int data) { 8 this.data = data; 9 this.leftChild = null; 10 this.rightChild = null; 11 this.parent = null; 12 } 13}