剑指OFFER-二叉搜索树与双向链表(Java)

题目描述

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

核心代码实现

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    
    
    //prior用于保存每个节点在序列中的前一个节点,当prior非空时创建两节点之间的连接关系
    TreeNode prior = null;
    public TreeNode Convert(TreeNode pRootOfTree) {
    
    
        //判断二叉搜索树是否为空
        if(pRootOfTree == null){
    
    
            return null;
        }
        //先遍历右子树,再遍历根节点,再遍历左子树
        Convert(pRootOfTree.right);
        if(prior != null){
    
    
            pRootOfTree.right = prior;    //建立双向连接
            prior.left = pRootOfTree;
        }
        prior = pRootOfTree;    //更新prior
        Convert(pRootOfTree.left);
        return prior;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_48440312/article/details/109287304