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

二叉搜索树与双向链表

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 {
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree == null) return null;
        TreeNode head = pRootOfTree;
        while (head.left != null) {
            head = head.left;
        }
        innerConvert(pRootOfTree);
        return head;
    }

    private void innerConvert(TreeNode root) {
        if (root == null) return;
        TreeNode left = root.left;
        TreeNode right = root.right;
        innerConvert(left);
        innerConvert(right);


        if (right != null) {
            TreeNode after = right;
            while (after.left != null) {
                after = after.left;
            }
            after.left = root;
            root.right = after;
        }

        if (left != null) {
            TreeNode pre = left;
            while (pre.right != null) {
                pre = pre.right;
            }
            pre.right = root;
            root.left = pre;
        }
    }
}

全部评论
主要逻辑点,就是根节点的左、右指针要怎么处理,左指针指向左子树中的最右树叶节点(该节点右指针也指向该根节点),同理,右指针指向右子树中的最左树叶节点(该节点的左指针也指向该根节点)
点赞 回复 分享
发布于 2023-10-25 10:33 福建

相关推荐

03-08 18:11
门头沟学院 Java
Java抽象小篮子:海投就完事了,简历没什么问题,最大问题是学历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务