数据结构之二叉搜索树

本文探讨了二叉搜索树这种特殊的数据结构,其特点在于每个节点的左子节点值小于父节点,右子节点值大于或等于父节点。文章介绍了如何插入节点,通过递归实现中序遍历,并讲解了删除节点的三种情况,特别是处理具有两个子节点的节点的复杂情况。此外,还提到了找到最小值和最大值节点的策略。
摘要由CSDN通过智能技术生成

      树是一种很有意思的数据结构,它既能像链表那样快速的插入和删除,又能像有序数组那样快速的查找,一般我们探究的树是一种特殊的树 --  二叉树。如果树中每个节点最多只能有两个子节点,这样的树就成为“二叉树”,否则,就是多路树了。二叉搜索树是一种更特殊的树 -- 父节点的左子节点的关键字值小于父节点,右子节点的关键字的值大于或等于这个父节点。

      一般树的节点包括三个部分:data、leftNode、rightNode。节点的数值,左子节点和右子节点。

public class Node {
	int data;
	Node leftChild;
	Node rightChild;
}
 1、 二叉搜索树的查找:

public Node find(int key) {
		Node current = root;
		while (current.data != key) {
			if (current.data > key) {
				current = current.leftChild;
			}
			if (current.data < key) {
				current = current.rightChild;
			}
			if (current == null) {
				return null;
			}
		}
		return current;
	}
2、二叉搜索树的插入新节点:

思路:1、如果没有节点,则待插入的节点直接插入到根节点;
    2、寻找合适的位置以便插入节点:current、parent分别表示当前搜索到的节点及其父节点,如果待搜索节点的值大于current节点的值,则current = current.rightChild;,否则,current = current.leftChild;结束的条件是:current==null为true,则可以将待插入节点插入到parent的后面了。

	/**
	 * @param key
	 *            待插入的节点的值 1、如果没有节点,则待插入的节点直接插入到根节点;
	 *            2、通过两个引用:current、parent分别表示当前搜索到的节点及其父节点
	 *            找到的条件是:current==null为true
	 */
	public void insert(int key) {
		Node insertNode = new Node();
		insertNode.data = key;
		Node current, parent;
		if (root == null) {
			root = insertNode;
		} else {
			current = root;
			while (true) {
				parent = current;
				if (current.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值