欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二叉搜索树与双向链表

程序员文章站 2022-05-06 21:41:47
...

牛客网:二叉搜索树与双向链表

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

解题思路:
第一步:中序遍历 左 根 右
第二步:把左当作前驱,把右当后驱
二叉搜索树与双向链表

TreeNode2 prev=null;//标记上一个结点
    public void ConvertChild(TreeNode2 pCur){
        if(pCur==null){
            return;
        }
        ConvertChild(pCur.left);//6
        pCur.left=prev;//置为null

        if(prev !=null){
            prev.right=pCur;//5
        }

        prev=pCur;
        ConvertChild(pCur.right);
    }
    //返回的是双向链表的头结点
    public TreeNode2 Convert(TreeNode2 pRootOfTree) {
        ConvertChild(pRootOfTree);
        TreeNode2 head=pRootOfTree;

        while (head!=null && head.left !=null){
            head=head.left;
        }
        return head;
    }
相关标签: java