二叉搜索树与双向链表

private TreeNode pre=null; //始终指向当前节点的前一个节点(因为是双向链表)
private TreeNode head=null; //链表的头结点

public TreeNode Convert(TreeNode pRootOfTree) {
    if(pRootOfTree==null){
        return null;
    }
    if(pRootOfTree.left==null && pRootOfTree.right==null){
        return pRootOfTree;
    }
    inOrder(pRootOfTree);
    return head;
}

//对以 node 为根节点的搜索二叉树进行遍历
private void inOrder(TreeNode node){
    if(node==null){
        return;
    }
    inOrder(node.left);

    //构建双向链表的过程
    node.left=pre;
    if(pre!=null){
        pre.right=node;
    }
    pre=node; //TODO: pre 指向 node

    if(head==null){
        head=node;
    }

    inOrder(node.right);
}

https://www.mianshi.onlinehttps://www.i9code.cn

本文由博客一文多发平台 OpenWrite 发布!

逃跑的眼镜_bvbEK5
7 声望0 粉丝

« 上一篇
反转链表