二叉搜索树与双向链表

//思路:
//二分搜索树有序:中序遍历
//难点在于不能创建任何新节点

private TreeNode pre = null; //指向当前节点的前一个节点
private TreeNode head = null; //指向头节点

public TreeNode Convert(TreeNode pRootOfTree) {
    if(pRootOfTree==null){
        return null;
    }
    inOrder(pRootOfTree);
    return head;
}

// node 是当前节点
private void inOrder(TreeNode node){
    if(node==null){
        return;
    }
    inOrder(node.left);
    node.left = pre;
    if(pre!=null){ //说明 root 不是头结点
        pre.right=node;
    }
    pre=node;
    if(head==null){
        head = node;
    }
    inOrder(node.right);
}

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

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

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