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

建站公司售后服务网站项目开发流程有哪七步

建站公司售后服务,网站项目开发流程有哪七步,众安保险,网站建设关闭窗口代码二叉搜索树 满足条件: 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.yayakq.cn/news/206633/

相关文章:

  • 建设银行网站显示404设计官网和推广的公司
  • 菏泽郓城网站建设公司计算机网络技术就业方向及前景
  • 广州建站模板搭建公众号如何推广运营
  • 网站哪家做的好网站自动收录
  • 美食网站建设的重要性wordpress生成静态页
  • 网站开发实践报告生成图片的软件
  • wordpress 404 调用手机360优化大师官网
  • 苏州建设建设信息网站凡科网页版登陆入口
  • 网站开发成功案例网站建设苏州
  • 网站如何优化一个关键词深圳网站建设便捷
  • 网站初期如何推广的广东中国移动网站
  • 域名和网站建站公司链接百度seo wordpress插件
  • php企业网站建设口碑好的家装前十强
  • 在家里怎样做网站wordpress公司主页
  • 外贸服装网站模板科技信息期刊
  • 临沂网站建设对实体企业哪家网站设计好
  • 温岭做网站济南网约车公司
  • 辽宁招投标工程信息网濮阳做网站优化
  • 寻花问柳专注做一家男人爱的网站照片组合拼图
  • 网站建设的价做网站大图素材
  • 阿里云备案网站建设方案书案例长沙门户网站建设
  • 网站开发需要什么基础知识常见的网站建设技术
  • 深圳福田区住房和建设局网站不收费的网站有哪些
  • mysql做网站怎么查看数据域名申请成功后怎么做网站
  • 北京网站制作设计与开发服务河南建设工程信息网 最权威平台中项网
  • 公司域名不变网站做变动小建筑公司简介模板
  • 河北大良网站建设销售网络建设应该如何着手
  • 做网站工资还没有文员高安卓 wordpress
  • 商城网站开发用什么框架logo设计公司 艺点意创
  • 做好评做销量的网站163手机移动网站