java剑指 Offer 36. 二叉搜索树与双向链表
Posted 青春无敌美少
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java剑指 Offer 36. 二叉搜索树与双向链表相关的知识,希望对你有一定的参考价值。
问题描述
剑指 Offer 36. 二叉搜索树与双向链表
题目分析:
我们分析后发现,要转换的链表是按中序遍历的顺序来的,因此我们先将二叉搜索树的中序遍历为递增序列 。在将其转换为双向链表是,构建相邻节点的引用关系时,设前驱节点 pre 和当前节点 cur ,不仅应构建 pre.right = cur ,也应构建 cur.left = pre 。循环链表: 设链表头节点 head 和尾节点 tail ,则应构建 head.left = tail 和 tail.right = head 。
在分析时,我们要注意在dfs(root.left)时,注意分类pre是否为null。
代码实现:
class Solution
Node pre,head;
public Node treeToDoublyList(Node root)
if(root==null) return null;
dfs(root);
head.left=pre;
pre.right=head;
return head;
public void dfs(Node cur)
if(cur==null) return ;
dfs(cur.left);
if(pre!=null)
pre.right=cur;
else
head=cur;
cur.left=pre;
pre=cur;
dfs(cur.right);
以上是关于java剑指 Offer 36. 二叉搜索树与双向链表的主要内容,如果未能解决你的问题,请参考以下文章
剑指 Offer 36. 二叉搜索树与双向链表(二叉搜索树,中序遍历,Java)
LeetCode(剑指 Offer)- 36. 二叉搜索树与双向链表