第5课:二叉搜索树
进度 0/24
🔍
二叉搜索树
左小右大,查找像下楼梯一样痛快!
📖知识引入
📐BST性质
左子树所有节点小于根,右子树所有节点大于根
🔍查找
目标比当前小往左走,比当前大往右走,一次排除一侧
➕插入
沿着查找的路径走到空位,把新节点挂上去就好
🧾中序有序
对二叉搜索树做中序遍历,输出正好是升序序列
💡
判断一棵树是不是BST最快的一招:中序遍历一遍,看结果是否严格递增
🔍BST的查找与插入
TreeNode* insert(TreeNode* root, int v) {
if (root == nullptr) return new TreeNode(v);
if (v < root->val) root->left = insert(root->left, v); // 小往左
else if (v > root->val) root->right = insert(root->right, v); // 大往右
return root;
}
bool search(TreeNode* root, int v) {
while (root != nullptr) {
if (v == root->val) return true;
root = (v < root->val) ? root->left : root->right; // 二选一
}
return false;
}查找和插入走的是同一条路:小往左、大往右。
🎯小测验
第1题:BST中比根大的值都在哪里?
第2题:对BST做哪种遍历能得到升序序列?
第3题:依次插入5、3、8、1后,根的左孩子是?
📝本课知识点
- ✓左子树<根<右子树
- ✓查找每次排除一侧
- ✓中序遍历得升序
第5课完成!继续探索下一课吧 🚀
