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

网站建设管理流程手机端网站模板下载

网站建设管理流程,手机端网站模板下载,html网站设计源码,软件开发方案书题目链接 剑指 Offer 36. 二叉搜索树与双向链表 标签 后序遍历、二叉搜索树 步骤 二叉搜索树中的任一节点的直接前驱为其左子树的最右侧节点,直接后继为其右子树的最左侧节点。因此,可以通过这个关系来操作原来的二叉树。为了不影响深度较大的节点的…

题目链接

剑指 Offer 36. 二叉搜索树与双向链表

标签

后序遍历、二叉搜索树

步骤

  • 二叉搜索树中的任一节点的直接前驱为其左子树的最右侧节点,直接后继为其右子树的最左侧节点。因此,可以通过这个关系来操作原来的二叉树。
  • 为了不影响深度较大的节点的判断,使用后序遍历。

Step1. 后序遍历,寻找 root 的最左侧和最右侧节点,分别设为 head, tail。其中,head 是整棵树最左侧的节点,相当于中序遍历中最先输出的节点。

void postOrder(Node* root) {if (root == nullptr) {return;}postOrder(root->left);if (!findHead && root->left == nullptr) { // 设置头结点head = root;findHead = true;}postOrder(root->right);// 找左子树的最右侧节点: 直接前驱Node *rightest = findRightest(root->left);if (rightest != nullptr) {root->left = rightest;rightest->right = root;}// 找右子树的最左侧节点:直接后继Node *leftest = findLeftest(root->right);if (leftest == nullptr) {tail = root;} else {root->right = leftest;leftest->left = root;}
}

Step2. 补充寻找指定节点左子树最右侧、右子树最右侧的节点的代码。

/* 	Node *leftest  = findLeftest(root->right),*rightest = findRightest(root->left);*/
Node* findRightest(Node* root) { // 找以root为根的二叉树中,最右侧的节点if (root == nullptr) {return nullptr;}while (root->right != nullptr) {root = root->right;}return root;
}
Node* findLeftest(Node* root) {if (root == nullptr) {return nullptr;}while (root->left != nullptr) {root = root->left;}return root;
}

Step3. 构建 headtail 之间的联系。

head->left = tail;
tail->right = head;

实现代码(C++)

class Solution {
public:Node *head, *tail;bool findHead = false;Node* findRightest(Node* root) {if (root == nullptr) {return nullptr;}while (root->right != nullptr) {root = root->right;}return root;}Node* findLeftest(Node* root) {if (root == nullptr) {return nullptr;}while (root->left != nullptr) {root = root->left;}return root;}void postOrder(Node* root) {if (root == nullptr) {return;}postOrder(root->left);if (!findHead && root->left == nullptr) { // 设置头结点head = root;findHead = true;}postOrder(root->right);// 找左子树的最右侧节点: 直接前驱Node *rightest = findRightest(root->left);if (rightest != nullptr) {root->left = rightest;rightest->right = root;}// 找右子树的最左侧节点:直接后继Node *leftest = findLeftest(root->right);if (leftest == nullptr) {tail = root;} else {root->right = leftest;leftest->left = root;}}Node* treeToDoublyList(Node* root) {if (root == nullptr) {return nullptr;}postOrder(root);head->left = tail;tail->right = head;return head;}
};
http://www.yayakq.cn/news/146593/

相关文章:

  • 官网指的是什么网站网站建设课程的感想
  • 公司电子商务网站建设规划方案做那种类型的网站seo好
  • 商城网站建设的优点绍兴做网站鼎成
  • 产地证哪个网站做我公司是帮企业做网站的_现在要帮客户们的网站备案
  • 无锡高端网站开发宿迁网站制作公司
  • 深圳专门做网站的公司公司网站域名备案流程
  • 盐城网站建设哪家快怎么做分享连接的网站
  • 广州网站的建设海尔网站建设的目标
  • 网站照片要求wordpress博客模板下载
  • 万网网站流量给人做代工的网站
  • 找推网宁波seo快速优化技术
  • 成都网站关键词推广优化网站设计遵从的原则
  • 花钱做网站注意什么wordpress无法重新安装
  • 友情链接检测659292博客seo教程
  • 给个网站做填空题怎么查找网站
  • 链接提取视频的网站建行贵金属
  • 做视频网站的备案要求吗企业名称怎么取名
  • 网站建设流程步骤哪个app可以免费下载ppt模板
  • 手机怎么自己做网站网站开发需要资质吗
  • 创意设计作品赏析百度地图关键词优化
  • 合作建网站2016年做水果行业专业网站
  • 域名换了网站需要备案么外贸建站主机
  • 宁德市建设局网站wordpress修改文章次序
  • 外贸网站服务器推荐网站制作公司成都
  • 国际知名的论文网站wordpress 微博同步
  • 霸州有做滤芯网站的吗小程序排名三大公司
  • onedrive 做网站静态深圳地铁公司官网
  • 临湘建设局网站智慧团建网站入口手机版
  • app定制开发网站建设满亦工作室 网站建设
  • 公司网站seo外包塘厦网站建设公司