当前位置: 首页 > news >正文

拍卖网站模板整合营销方案怎么写

拍卖网站模板,整合营销方案怎么写,做网站汉口,域名查询网ip二叉搜索树 满足条件: 1.对于根节点:左子树中所有节点的值小于右子树中所有节点的值 2.任意节点的左右子树也是二叉搜索树,同样满足条件1 二叉搜索树的常用操作 我们将二叉搜索树封装为一个类 BinarySearchTree ,并声明一个成员变…

二叉搜索树

满足条件:

1.对于根节点:左子树中所有节点的值小于右子树中所有节点的值

2.任意节点的左右子树也是二叉搜索树,同样满足条件1

二叉搜索树的常用操作

我们将二叉搜索树封装为一个类 BinarySearchTree ,并声明一个成员变量 root ,指向树的根节点

查找节点

给定目标值target,我们可以根据二叉搜索树的性质来查找,声明一个节点cur从根节点开始遍历

  • cur.val<target说明targetcur的右子树,执行cur=cur.right
  • cur.val>target说明targetcur的左子树,执行cur=cur.left
  • cur.val=target,返回该节点,跳出循环
/* 查找节点 */
TreeNode *search(int num) {TreeNode *cur = root;// 循环查找,越过叶节点后跳出while (cur != nullptr) {// 目标节点在 cur 的右子树中if (cur->val < num)cur = cur->right;// 目标节点在 cur 的左子树中else if (cur->val > num)cur = cur->left;// 找到目标节点,跳出循环elsebreak;}// 返回目标节点return cur;
}

插入节点

  • 查找插入位置:从根节点出发,根据当前节点值和 num 的大小关系循环向下搜索,直到越过叶节点(遍历至 None )时跳出循环

  • 在该位置插入节点:初始化节点 num ,将该节点置于 None 的位置。

注意:

二叉搜索树中不允许有重复的元素,否则就违反了二叉搜索树的定义,若待插入的节点在二叉搜索树中,则不执行任何操作,直接返回

为了实现插入节点,我们需要借助节点 pre 保存上一轮循环的节点。这样在遍历至 None 时,我们可以获取到其父节点,从而完成节点插入操作

/* 插入节点 */
void insert(int num) {// 若树为空,则初始化根节点if (root == nullptr) {root = new TreeNode(num);return;}TreeNode *cur = root, *pre = nullptr;// 循环查找,越过叶节点后跳出while (cur != nullptr) {// 找到重复节点,直接返回if (cur->val == num)return;pre = cur;// 插入位置在 cur 的右子树中if (cur->val < num)cur = cur->right;// 插入位置在 cur 的左子树中elsecur = cur->left;}// 插入节点TreeNode *node = new TreeNode(num);if (pre->val < num)pre->right = node;elsepre->left = node;
}

删除节点

二叉搜索树的删除分为三种情况

  • 当待删除节点的度为0时,可以直接删除这个节点。
  • 当待删除节点的度为1时,我们将子节点替换待删除的节点即可
  • 当待删除节点的度为2时,我们无法删除这个节点,而是需要一个节点替换这个节点,因为要维持搜索二叉树的性质,所以这个待删除节点的值可以是右子树的最小节点或者左子树的最大节点
/* 删除节点 */
void remove(int num) {// 若树为空,直接提前返回if (root == nullptr)return;TreeNode *cur = root, *pre = nullptr;// 循环查找,越过叶节点后跳出while (cur != nullptr) {// 找到待删除节点,跳出循环if (cur->val == num)break;pre = cur;// 待删除节点在 cur 的右子树中if (cur->val < num)cur = cur->right;// 待删除节点在 cur 的左子树中elsecur = cur->left;}// 若无待删除节点,则直接返回if (cur == nullptr)return;// 子节点数量 = 0 or 1if (cur->left == nullptr || cur->right == nullptr) {// 当子节点数量 = 0 / 1 时, child = nullptr / 该子节点TreeNode *child = cur->left != nullptr ? cur->left : cur->right;// 删除节点 curif (cur != root) {if (pre->left == cur)pre->left = child;elsepre->right = child;} else {// 若删除节点为根节点,则重新指定根节点root = child;}// 释放内存delete cur;}// 子节点数量 = 2else {// 获取中序遍历中 cur 的下一个节点TreeNode *tmp = cur->right;while (tmp->left != nullptr) {tmp = tmp->left;}int tmpVal = tmp->val;// 递归删除节点 tmpremove(tmp->val);// 用 tmp 覆盖 curcur->val = tmpVal;}
}
http://www.bjxfkj.com.cn/article/109565.html

相关文章:

  • 廉政建设网站网站内部链接的策略
  • 先备案先建网站重庆网站设计重庆最加科技
  • 凡诺企业网站管理系统菏泽微信小程序制作
  • 网站seo技术能不能赚钱农村电子商务网站建设方案
  • 深圳做小程序网站设计高端网站建设推来客地址
  • 在线制作插画网站荣成市有做网站的吗
  • 中企动力做的网站好吗邹城网站建设v556
  • 网络营销网站设计网站上线步骤 icp备案
  • 网站文章多久才收录作品 上海高端网站设计
  • 南京网站群建设公司网页游戏排行榜第一名
  • 深圳专业做网站建设青岛建设网站的公司
  • 靖州建设局网站做网站注册公司
  • 厦门网站建设 孚珀科技做网站排名费用多少
  • 建网站多少费用互联购物
  • 如何登录中国建设银行网站网站建设确认表
  • 论坛网站需要多大的空间网页设计师的工作
  • 怎么看网站是不是做竞价数据分析师报考条件
  • 找人做效果土去那网站找郑州专业手机网站制作
  • 微网站和小程序的区别建设网站构成
  • 刷网站排名 优帮云宁波网站建设外包
  • 网站编辑楼盘详情页怎么做网站图片上的分享怎么做
  • 域名注册以后会给你一个账户名密码上传做好的网站python网页开发
  • 深圳市保障房申请网站南昌模板建站定制网站
  • 太原网站建设王道下拉惠购物网站后台流程图
  • 18款禁用网站app全部推广联盟网站怎么做
  • 网站建设培训学院业之峰装饰公司简介
  • 网站企业模板天津建设银行公积金缴费网站
  • 怎么做网站文件验证长沙做企业网站
  • 网站建设商虎小程序赣州人才网招聘网
  • 做网站推广的流程中国机械加工外协网最新订单