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

.wordpress安装陕西seo推广

.wordpress安装,陕西seo推广,网页制作特效代码大全,加强官方网站建设题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表…

题目

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

为了让您更好地理解问题,以下面的二叉搜索树为例:

我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。

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

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

解题思路

1.题目要求将二叉搜索树转换成一个排序的循环双向链表,既然他需要排序,那么我们就对二叉搜索树进行中序遍历,这样我们就可以得到有顺序的序列。

2.我们新建一个队列 queue ,然后对二叉搜索树进行中序遍历,并且将遍历的结果入队。

3.遍历结束后我们就得到了一个有序队列,这时我们只需要使用 whie 循环让队列中的元素出队并且将元素做一下连接,让前一个元素的right指针指向后一个元素,让后一个元素的left指针指向前一个元素。最后不要忘记首位元素的连接。

代码实现

class Solution {public Node treeToDoublyList(Node root) {if(root == null){return null;}Queue<Node> queue = new LinkedList<>();inOrder(root, queue);Node head = queue.poll();Node pre = head;while(!queue.isEmpty()){Node cur = queue.poll();pre.right = cur;cur.left = pre;pre = cur;}pre.right = head;head.left = pre;return head;}void inOrder(Node root, Queue<Node> queue){if(root == null){return;}inOrder(root.left, queue);queue.add(root);inOrder(root.right, queue);}
}

测试结果

 

http://www.dt0577.cn/news/53442.html

相关文章:

  • 网站开发 方案 报价单东莞网站推广营销网站设计
  • 新手练习做网站哪个网站比较合适百度搜索指数排名
  • 长沙企业建站安徽建站
  • 上海做网站的公重庆seo结算
  • 公司网站空间怎么续费东莞网络营销推广软件
  • 物流网站html5模板连云港seo优化
  • 常德网站开发武汉搜索推广
  • 上海网站制作的3000行业关键词
  • 打鱼网站怎么做semantic
  • ECMS做的网站苏州优化seo
  • 新手做哪类网站百度一下你就知道
  • 用代码怎么做网站广告宣传方式有哪些
  • 展示型网站可以做推广的吗seo网站推广计划
  • 推荐5家知名seo系统源码出售
  • 哪个网站做的win10系统国际新闻最新消息美国
  • 提供网站建设服务的网站石家庄网站关键词推广
  • 做街舞网站的素材百度流量推广项目
  • 建筑企业网站模板百度seo工作室
  • 获取网站访客信息长春seo网站优化
  • 做网站营销公司排名seo排名赚app官网
  • 中天建设集团有限公司西南分公司seo站外推广
  • wordpress网站白屏深圳seo
  • 个人开店做外贸网站seo基础理论
  • 网站建设需要钱吗网络推广营销策划方案
  • 化妆品网站建设计划书软件开发流程
  • 海外专用服务器如何seo推广
  • 织梦网站栏目不显示徐州网络推广服务
  • 网站关键字及说明今日军事头条
  • 做壁画在哪个网站宁波网络推广优化方案
  • 商丘网站建设价格刷僵尸粉网站推广