数据结构与算法之二叉搜索树
二叉搜索树 二叉搜索树又称为二叉排序树,首先二叉搜索树是一棵二叉树,所谓二叉树,就是"任意节点最多允许两个子节点",这两个子节点称为左右子节点。 性质: 若左子树非空,则左子树上的所有节点均小于其根节点 若右子树非空,则右子树上的所有节点均大于其根节点 即任意节点的值一定大于其左子树中的每一个节点的值,并小于右子树中的每一个节点的值。换句话说, 中序遍历二叉搜索树得到的序列为从小到大排序的有序序列。 二叉搜索树基本实现: //二叉搜索树的实现 #include<iostream> using namespace std; struct Node{ int data;//数据 struct Node *lchild;//左孩子结点 struct Node *rchild;//右孩子结点 Node(int x):data(x),lchild(nullptr),rchild(nullptr){}; }; //从二叉树中搜索对应的val值,如果存在在返回该结点,若不存在则返回空指针 Node* SearchBST(Node* root,int val) { while(root!=nullptr) { if(root->data == val) return root; root = root->data > val?root->lchild:root->rchild; } return