二叉搜索树与双向链表

2年前 (2022) 程序员胖胖胖虎阿
250 0 0

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

解题思路

我们知道,二叉搜索树的中序遍历结果是有序的,因此我们第一个想到的就是使用中序遍历,在这个过程中对结点进行操作

public class Solution {
    
    // 标记上一次入栈值
    private TreeNode preNode = null;
    private TreeNode head = null;
    
    public TreeNode Convert(TreeNode pRootOfTree) {
        if (pRootOfTree == null) {
            return null;
        }
        midShow(pRootOfTree);
        return head;
    }
    
    public void midShow(TreeNode pRootOfTree) {
        if(pRootOfTree.left != null) {
            midShow(pRootOfTree.left);
        }
        if(preNode == null) {
            head = pRootOfTree;
            preNode = pRootOfTree;
        } else {
            preNode.right = pRootOfTree;
            pRootOfTree.left = preNode;
            preNode = pRootOfTree;
        }
        if(pRootOfTree.right != null) {
            midShow(pRootOfTree.right);
        }
    }
}

版权声明:程序员胖胖胖虎阿 发表于 2022年10月25日 下午7:48。
转载请注明:二叉搜索树与双向链表 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...