网站建设营销口号扬州建设机械网站

张小明 2026/3/12 7:57:10
网站建设营销口号,扬州建设机械网站,国外网站建设 网站,敬请期待下一句文章目录一、什么是二叉搜索树#xff08;BST#xff09;#xff1f;二、BST 的基本操作1. 节点定义2. 查找操作3. 插入操作4. 删除操作三、经典例题分析例题 1#xff1a;验证二叉搜索树#xff08;LeetCode 98#xff09;例题 2#xff1a;二叉搜索树的最近公共祖先BST二、BST 的基本操作1. 节点定义2. 查找操作3. 插入操作4. 删除操作三、经典例题分析例题 1验证二叉搜索树LeetCode 98例题 2二叉搜索树的最近公共祖先LeetCode 235四、C 语言实现注意事项与总结1. 核心要点回顾2. 避坑指南一、什么是二叉搜索树BST核心定义二叉搜索树是一种有序二叉树满足以下性质左子树中所有节点的值 根节点的值右子树中所有节点的值 根节点的值左、右子树也必须是二叉搜索树关键特性中序遍历结果为升序序列查找、插入、删除操作的时间复杂度O (h)h 为树的高度二、BST 的基本操作1. 节点定义C 语言中通过结构体定义树节点需手动管理指针和内存#includestdio.h#includestdlib.h#includestdbool.h// 用于bool类型C99及以上// 二叉搜索树节点结构体typedefstructTreeNode{intval;structTreeNode*left;structTreeNode*right;}TreeNode;// 新建节点封装内存分配TreeNode*createNode(intval){TreeNode*node(TreeNode*)malloc(sizeof(TreeNode));node-valval;node-leftNULL;node-rightNULL;returnnode;}2. 查找操作思路利用 BST 有序性迭代查找避免递归栈开销// 查找指定值的节点返回节点指针未找到返回NULLTreeNode*searchBST(TreeNode*root,intval){TreeNode*currentroot;while(current!NULL){if(valcurrent-val){returncurrent;// 找到目标节点}elseif(valcurrent-val){currentcurrent-left;// 左子树查找}else{currentcurrent-right;// 右子树查找}}returnNULL;// 未找到}3. 插入操作思路递归找到空位置插入需注意指针的地址传递// 插入节点递归实现TreeNode*insertIntoBST(TreeNode*root,intval){// 递归终止空位置插入新节点if(rootNULL){returncreateNode(val);}// 左子树插入if(valroot-val){root-leftinsertIntoBST(root-left,val);}// 右子树插入elseif(valroot-val){root-rightinsertIntoBST(root-right,val);}// 重复值不处理本文默认无重复returnroot;}4. 删除操作思路分 3 种情况处理// 找到以node为根的树的最小节点用于删除操作TreeNode*findMin(TreeNode*node){while(node-left!NULL){nodenode-left;}returnnode;}// 删除指定值的节点TreeNode*deleteNode(TreeNode*root,intkey){if(rootNULL){returnNULL;}// 1. 找到要删除的节点if(keyroot-val){root-leftdeleteNode(root-left,key);}elseif(keyroot-val){root-rightdeleteNode(root-right,key);}// 2. 找到目标节点处理删除逻辑else{// 情况1叶子节点/只有右子树if(root-leftNULL){TreeNode*temproot-right;free(root);// 释放当前节点内存returntemp;}// 情况2只有左子树elseif(root-rightNULL){TreeNode*temproot-left;free(root);// 释放当前节点内存returntemp;}// 情况3有两个子树找右子树最小节点替代TreeNode*minRightfindMin(root-right);root-valminRight-val;// 替换值root-rightdeleteNode(root-right,minRight-val);// 删除替代节点}returnroot;}// 辅助销毁整棵树避免内存泄漏voiddestroyTree(TreeNode*root){if(rootNULL)return;destroyTree(root-left);destroyTree(root-right);free(root);}三、经典例题分析例题 1验证二叉搜索树LeetCode 98boolisValidBST(structTreeNode*root){// 定义栈数组模拟递归栈存储树节点指针长度10000适配大部分测试用例structTreeNode*stack[10000];intstk_top-1;// 栈顶指针初始为-1表示栈空structTreeNode*curroot;// 遍历指针初始指向根节点intmax-2147483648;// 记录中序遍历的前一个节点值初始为int最小值INT_MINintbegin0;// 标记是否是第一个节点处理根节点为INT_MIN的边界情况// 迭代中序遍历核心循环当前节点非空 或 栈非空时继续遍历while(cur!NULL||stk_top0){// 内层循环将当前节点的所有左子节点依次入栈中序遍历先访问左子树while(cur!NULL){stack[stk_top]cur;// 节点入栈栈顶指针上移curcur-left;// 继续遍历左子树}// 出栈访问当前栈顶节点中序遍历的根节点curstack[stk_top--];// 栈顶节点出栈栈顶指针下移// 核心验证当前节点值需严格大于前一个节点值maxif(cur-valmax){// 特殊处理仅当max是初始值INT_MIN且是第一个节点时允许等于避免误判根节点为INT_MIN的情况// 若不是第一个节点 或 max已更新过直接判定为无效BSTif(max!-2147483648||begin!0)returnfalse;begin;// 标记第一个节点已处理}else{maxcur-val;// 更新max为当前节点值作为下一个节点的比较基准}curcur-right;// 遍历右子树中序遍历左→根→右}// 所有节点遍历完成且满足升序判定为有效BSTreturntrue;}例题 2二叉搜索树的最近公共祖先LeetCode 235structTreeNode*lowestCommonAncestor(structTreeNode*root,structTreeNode*p,structTreeNode*q){// 递归终止条件当前节点为空遍历到叶子节点的子节点无LCAif(!root)returnNULL;// 核心判断当前节点值在p和q的值之间包含等于→ 当前节点就是LCA// 两种情况1. p≤root≤q 2. q≤root≤p兼容p/q值大小不确定的情况if((root-valp-valroot-valq-val)||(root-valq-valroot-valp-val))returnroot;// 递归查找左子树的LCAstructTreeNode*leftlowestCommonAncestor(root-left,p,q);// 递归查找右子树的LCAstructTreeNode*rightlowestCommonAncestor(root-right,p,q);// 左子树找到LCA → 返回左子树的结果if(left)returnleft;// 右子树找到LCA → 返回右子树的结果if(right)returnright;// 左右子树均未找到理论上BST中p/q存在时不会走到这一步returnNULL;}四、C 语言实现注意事项与总结1. 核心要点回顾BST 的灵魂中序遍历升序解题核心突破口C 语言特性需手动管理内存malloc/free指针传递是关键时间复杂度理想 O (logn)最坏 O (n)斜树实际需用平衡 BSTAVL / 红黑树优化。2. 避坑指南内存泄漏插入 / 删除节点后必须释放无用节点free销毁树时递归释放所有节点指针空值所有指针操作前必须检查NULL避免段错误边界处理验证 BST 时用long long存储前驱值避免 int 最小值溢出栈溢出递归深度过深时如斜树优先用迭代实现如查找、中序遍历。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

建设网站和别人公司重名商城网站功能列表

简介 文章探讨了大模型技术如何推动数字员工发展,重塑企业工作方式。通过分析小鹏汽车、云南白药等6家企业的实践案例,展示了数字员工在制造、能源、金融等行业的应用效果。研究强调数字员工与人类员工是"主从关系",通过人机协同提…

张小明 2026/3/5 3:11:34 网站建设

自适应网站网页模板网站生成

12月11日,第12届全球外交官中国文化之夜在京举办。来自全球170多个国家和地区的驻华外交官参与了本次活动。该活动由上午的“全球品牌发展暨中国品牌出海论坛”及晚上的“中国文化之夜”组成。活动旨在促进各国驻华外交官、文化学者及企业精英间的文化交流与合作&am…

张小明 2026/3/5 3:11:33 网站建设

网站建设的主要功能有哪些江苏无锡重要通知

Redis学习过程中涉及到布隆过滤器的内容、顺便把布谷鸟过滤器也讲一下,做个知识拓展。 后面继续学Redis。在分布式系统和缓存场景中,去重、防穿透、高效查询是常见需求。布隆过滤器(Bloom Filter)曾是解决这些问题的利器&#xff…

张小明 2026/3/5 3:11:33 网站建设

从域名到网站4.9.8wordpress

Matheson气体数据手册:科研工作者的精准数据解决方案 【免费下载链接】Matheson气体数据手册下载介绍 Matheson气体数据手册是气体研究领域的权威参考资料,本仓库提供该手册的下载资源。手册全面收录了气体的物理性质、化学性质、应用领域及安全使用指南…

张小明 2026/3/5 3:11:34 网站建设

域名指向国外服务器做网站网站建设与管理专业题目

3步打造专属FGO-py视觉盛宴:界面美化与个性化定制完全指南 【免费下载链接】FGO-py FGO-py - 一个 Fate/Grand Order(命运-冠位指定)的助手工具,提供自动化游戏操作,适合对游戏开发和自动化脚本有兴趣的程序员。 项目…

张小明 2026/3/5 3:11:36 网站建设