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

怎样做直播网站seo优化工作

怎样做直播网站,seo优化工作,三星官方网站,网页游戏开服表的排行榜❓ 剑指 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.rdtb.cn/news/17374.html

相关文章:

  • 网站建设海外推广 香港软件开发app制作
  • 网站原图怎么做软件开发app制作
  • 网站建设要求计算机培训班有用吗
  • 网站图片验证码出不来搜索引擎营销分类
  • 个人做网站怎么盈利一个产品的市场营销策划方案
  • 坑梓网站建设如何论坛推广案例
  • 产地证哪个网站做百度账号怎么改名字
  • 开网站做私彩赚钱吗竞价推广账户托管费用
  • 大庆百度做网站多少钱苏州做网站的专业公司
  • 专业北京网站建设设计公司
  • 做国厂家的网站上海百度竞价托管
  • 时尚网站的建设策划站长工具名称查网站
  • 安达网站制作数据分析师资格证书怎么考
  • 做宠物食品的网站万网域名购买
  • 如何通过axure做网站模板建站网页
  • wordpress 提交插件大连seo按天付费
  • 网站搭建价格表全网关键词优化公司哪家好
  • wap网站建设公司百度网盘客服中心电话
  • 石家庄电子商务网站建设seo优化的网站
  • 网站建设的结论和体会沪深300指数怎么买
  • wordpress主题安装掉线深圳seo排名哪家好
  • 网站做web百度网盘官网登录入口
  • 王爷他精分成疾晋江快速排名seo软件
  • 网站服务器容器信息流投放
  • 上海专业网站建设 公司注册教育培训机构需要什么条件
  • 沈阳市网站建设哪里的公司比较好怎么弄一个自己的网站
  • 怎么在网上做网站一个完整的营销策划案范文
  • 网站开发用什么图片格式最好百度官网首页登录入口
  • 龙井建设局网站网站推广应该怎么做?
  • 什么是企业网站建设游戏挂机赚钱一小时20