二叉搜索树与双向链表

二叉搜索树与双向链表

http://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5

/*
* 链表中最后一个节点的指针
* 当使用递归,且需要用具体变量保存每次递归的结果时,
* 不能把此变量作为递归函数的形参
* 因为每次递归返回时此变量都会变为之前的值
* 所以这里的变量定义在了方法的外面且不作为inOrderConvert()的形式参数
* */
TreeNode lastNodeList = null;

/**
 * @Author: ZwZ
 * @Description: 在中序遍历过程中对指针进行改变 
 * @Param: [pRootOfTree] 
 * @return: jianZhi.TreeNode 
 * @Date: 2020/1/27-16:19
 */
public TreeNode Convert1(TreeNode pRootOfTree) {
    inOrderConvert(pRootOfTree);
    //寻找链表头节点
    while (lastNodeList != null && lastNodeList.left != null)
        lastNodeList = lastNodeList.left;
    return lastNodeList;
}
/**
 * @Author: ZwZ
 * @Description: 序遍历并改变指针
 * @Param: [root] 
 * @return: void 
 * @Date: 2020/1/27-16:22
 */
public void inOrderConvert(TreeNode root) {
    if (root == null)
        return;
    if (root != null) {
        inOrderConvert(root.left);
        root.left = lastNodeList;
        if (lastNodeList != null)
            lastNodeList.right = root;
        lastNodeList = root;
        inOrderConvert(root.right);
    }
}

}

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务