二叉搜索树与双向链表

题目描述

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

思路

  1. 使用递归算法求解。

2.使用两个TreeNode分别存储前一个结点(pre)以及头结点(head)。

3.每个递归方法中,将当前node结点与pre结点进行相连。

node.left = pre
pre.right = node

4.当递归到最左侧的叶子结点时,将其值赋值给head即可。(二叉搜索树最左边的叶子结点的值是最小的)

Java代码实现

public class Solution {

    private TreeNode head;
    private TreeNode pre;

    public TreeNode Convert(TreeNode pRootOfTree) {
        reverse(pRootOfTree);
        return head;
    }

    private void reverse(TreeNode node){
        if(node == null)
            return;
        reverse(node.left);
        node.left = pre;
        if(pre != null)
            pre.right = node;
        pre = node;
        if(head == null)
            head = node;
        reverse(node.right);
    }

}
全部评论

相关推荐

北漂的牛马人:211佬,包进的,可能是系统问题
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-26 14:50
人力小鱼姐:有后面墨迹那两句的时间问题早回答完了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务