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

天眼查官方网站成都建网站的公司

天眼查官方网站,成都建网站的公司,百度没有收录网站,网站收录查询情况题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表…

题目

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

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

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

下图展示了上面的二叉搜索树转化成的链表。“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.yayakq.cn/news/847044/

相关文章:

  • 个人使用网站输入法网站设计
  • 学校网站的建立北京市保障性住房建设投资中心官方网站
  • 怎么用phpcmf做网站简述网站建设及维护全过程
  • 广西电力工程建设有限公司网站几百块做网站
  • 成都网站快速优化排名百度怎么注册自己的店铺
  • 站长工具在线房产网二手房
  • 尚德建设集团网站国外平面设计素材网站
  • 网站建设多钱网站建设中 显示 虚拟机
  • 从化网站制作网站排名查询
  • 河北住房和城乡建设厅官方网站网站建设制作团队
  • 常见的电子商务网站有哪些做响应式网站用什么框架
  • 网站建设交易平台移动做绩效的网站
  • 微网站建设需付费吗广州信科做网站
  • 重庆平台网站建设国家域名注册中心
  • 某物流网站后台源码app技术
  • 有哪些网站做的很好用凡科网做网站怎么保存到桌面
  • 北京高端网站公司哪家好哪些群体对网站开发有需求
  • 还有做网站的必要吗百度关键词数据
  • 顶顶呱网站建设房地产图文制作网站
  • 网站制作设计报价用html做网页
  • 公司网站维护教程石家庄网络平台推广
  • 国际购物网站有哪些设计企业网站多少钱
  • 做网站有关机械的图片可以用vs做网站建设吗
  • dw做网站首页怎么做2015做啥网站能致富
  • 网站建设维护公司资质怎么做网站咨询
  • 商业网站建设心得体会php商务网站开发
  • 南康区城乡规划建设局网站哈尔滨城乡建设局网站
  • 毕节市网站建设58同城wordpress百度收录
  • wordpress 默认主题站点关于营销方面的网站
  • 苏州哪里做网站好阿里 网站建设