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

发帖推广百度首页在线网站seo诊断

发帖推广百度首页,在线网站seo诊断,响应式和非响应式网站,棋牌软件制作开发app公司❓ 剑指 Offer 36. 二叉搜索树与双向链表 难度:中等 输入一棵二叉搜索树,将该二叉搜索树转换成一个 排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为…

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

难度:中等

输入一棵二叉搜索树,将该二叉搜索树转换成一个 排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。

为了让您更好地理解问题,以下面的二叉搜索树为例:
在这里插入图片描述
我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。

下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。

在这里插入图片描述
特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中的第一个节点的指针。

注意:此题对比原题有改动。

💡思路:中序递归遍历

由二叉搜索树的性质:中序遍历即为 递增序列。所以可以在中序遍历的时候完成双向链表的转化:

定义两个结点 headend 分别指向已转换链表的 头结点尾结点

inOrder(root) :中序递归遍历:

  • 终止条件:当 root 为空时,返回;
  • 递归调用左子树:inOrder(root.left) ;
  • 构建链表:
    • 当到达树的最左边的第一个叶子节点,即为 head
    • end 不为空时,修改双向结点引用, 即 end.right = root, root.left = end
    • 更新 end ,即 end = root;
  • 递归调用右子树, inOrder(root.right)

最后将双向链表首尾相连:head.left = end , end.right = head

🍁代码:(C++、Java)

C++

/*
// Definition for a Node.
class Node {
public:int val;Node* left;Node* right;Node() {}Node(int _val) {val = _val;left = NULL;right = NULL;}Node(int _val, Node* _left, Node* _right) {val = _val;left = _left;right = _right;}
};
*/
class Solution {
private:Node* head = nullptr;Node* end = nullptr;void inOrder(Node* root){if(root == nullptr) return;inOrder(root->left);if(head == nullptr) head = root;//树的最左边的第一个叶子节点为headroot->left = end;if(end != nullptr) end->right = root;end = root;inOrder(root->right);}
public:Node* treeToDoublyList(Node* root) {inOrder(root);if(head != nullptr){head->left = end;end->right = head;}return head;}
};

Java

/*
// Definition for a Node.
class Node {public int val;public Node left;public Node right;public Node() {}public Node(int _val) {val = _val;}public Node(int _val,Node _left,Node _right) {val = _val;left = _left;right = _right;}
};
*/
class Solution {private Node head = null;private Node end = null;private void inOrder(Node root){if(root == null) return;inOrder(root.left);if(head == null) head = root;//树的最左边的第一个叶子节点为headroot.left = end;if(end != null) end.right = root;end = root;inOrder(root.right);}public Node treeToDoublyList(Node root) {inOrder(root);if(head != null){head.left = end;end.right = head;}return head;}
}

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为二叉树的节点数,中序遍历需要访问所有节点。
  • 空间复杂度 O ( n ) O(n) O(n),最差情况下,即树退化为链表时,递归深度达到 n,系统使用 O ( n ) O(n) O(n) 栈空间。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!

http://www.shuangfujiaoyu.com/news/36977.html

相关文章:

  • 凡科建站做的网站收录慢吗正规网络公司关键词排名优化
  • 泉州响应式网站建设2345网址导航下载桌面
  • 手机网站建设软件有哪些方面成都seo达人
  • 长沙网站优化外包谷歌seo站内优化
  • 阿里巴巴网站建设论文友情链接推广
  • 新乐网站制作价格专业百度seo排名优化
  • 关注网站建设怎么样推广自己的网址
  • 服务器网站部署seo怎么优化效果更好
  • 静态网站用什么做晚上必备免费软件大全苹果
  • wordpress中的全站链接怎么改网络营销解释
  • 北京做网站开发公司电话网上推广赚钱方法
  • 上海做无创DNA医院网站项目推广网
  • 网络营销与推广培训站内seo是什么意思
  • 长春网站上排名关键词如何排名在首页
  • 想做一个个人网站怎么做百度导航最新版本
  • 南昌网站建设公司 今日头条
  • 阿里云网站建设教程视频互动营销案例都有哪些
  • 2017网站建设趋势网页制作app
  • 商业营销厅装修公司关键词排名优化公司外包
  • 什么网站能看到专业的做面包视频微信营销推广方案
  • 山西省住房建设厅网站首页怎么引流到微信呢
  • 开发论坛网站广州疫情升级
  • 怎样做网站关键词优化百度投诉中心热线
  • 网站空间格式asp艾滋病多久能查出来
  • 山西网站制作公司seo比较好的优化方法
  • ukidc做电影网站搜什么关键词能找到网站
  • 如果做镜像网站网站制作流程和方法
  • 政府网站的建设背景百度推广获客方法
  • 绍兴做网站选哪家南京seo顾问
  • 党建网站建设方案书网络培训心得体会总结