当前位置: 首页 > 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.mmbaike.com/news/40641.html

相关文章:

  • 网站做压测网站页面的优化
  • 优量汇广告平台昆山seo网站优化软件
  • 网站建设案例哪家好广州seo运营
  • wordpress 大战石家庄seo全网营销
  • 运营笔记wordpress杭州网站优化公司哪家好
  • 正能量网站建设搜索百度
  • 公司网站制作机构网站搜索工具
  • wordpress什么样seo网站优化经理
  • c#网站开发日期控件b站入口2024已更新
  • 少儿编程加盟官网信息流优化师前景
  • 北京优质网站制作今日新闻最新10条
  • 广东建设工程协会网站怎么上百度推广产品
  • 网站如何自己做seo搜索引擎排名优化建议
  • 淘宝做图网站好有链接的网站
  • 服务行业做网站网站域名查询工具
  • ps做网站素材文件打包网站定制的公司
  • 做音乐网站要求代刷网站推广快速
  • 代做网站作业卢镇seo网站优化排名
  • 网站免费徐州百度seo排名
  • 大连建站公司网络营销带来的效果
  • 网络网站制作过程发布软文的平台
  • 方城企业网站制作哪家好汕头百度网站排名
  • 深圳b2b网站建设排名搜索引擎seo关键词优化效果
  • 如何加强企业网站建设论文在哪里打广告效果最好
  • 代做ppt的网站站长工具收录查询
  • 信息查询类网站是怎么做的站长工具pr值查询
  • 四字母net做网站怎么样seo排名优化表格工具
  • 武汉常阳新力建设工程有限公司网站百度推广是什么
  • wordpress 域名分离seol英文啥意思
  • 上海先进网站设计关键词优化的策略