记录一下今天犯的错误

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

正确:

    TreeNode pre = null;
    public TreeNode Convert(TreeNode pRootOfTree) {
        if (pRootOfTree == null)
            return null;

        Convert1(pRootOfTree);

        TreeNode res = pRootOfTree;
        while (res.left != null)
            res = res.left;
        return res;
    }

    public void Convert1(TreeNode pRootOfTree) {
        if (pRootOfTree == null)
            return;
        Convert1(pRootOfTree.left);
        System.out.print("1:");
        System.out.println(pre == null ? "null" : pre.val);
        // 记录链表中当前节点的前一个节点
        pRootOfTree.left = pre;
        if (pre != null)
            pre.right = pRootOfTree;
        pre = pRootOfTree;
        System.out.print("2:");
        System.out.println(pre == null ? "null" : pre.val);

        Convert1(pRootOfTree.right);
    }
View Code

错误:

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

                TreeNode pre = null;
        Convert(pRootOfTree, pre);

        TreeNode res = pRootOfTree;
        while (res.left != null)
            res = res.left;
        return res;
    }

    public void Convert(TreeNode pRootOfTree, TreeNode pre) {
        if (pRootOfTree == null)
            return;
        Convert(pRootOfTree.left, pre);
        System.out.print("1:");
        System.out.println(pre == null ? "null" : pre.val);
        // 记录链表中当前节点的前一个节点
        pRootOfTree.left = pre;
        if (pre != null)
            pre.right = pRootOfTree;
        pre = pRootOfTree;
        System.out.print("2:");
        System.out.println(pre == null ? "null" : pre.val);

        Convert(pRootOfTree.right, pre);
    }
View Code
原文地址:https://www.cnblogs.com/wangkaipeng/p/10617006.html