题解 | #二叉搜索树与双向链表#

二叉搜索树与双向链表

https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5

import java.util.*;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    TreeNode root;
    TreeNode pre;
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree==null) return null;
        Convert(pRootOfTree.left);
        if(root==null) root = pRootOfTree;
        if(pre!=null){
            pre.right = pRootOfTree;
            pRootOfTree.left = pre;
        }
        pre = pRootOfTree;
        Convert(pRootOfTree.right);

        return root;
    }
}

这题目有两个难点:

1,首先是中序遍历时,左节点要把right指针指向根,右节点要把left指针指向根,这在递归时不能采用统一操作

2,引入一个冗余操作,可以解决这个问题

另外,总结一个经验:在解决递归的参数传递的时候,可以将变量定义在递归函数外,这样就可以解决,这在上一题中也有体现

全部评论

相关推荐

10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务