美文网首页
LeetCode 第 426 题:二叉搜索树转化为双向链表

LeetCode 第 426 题:二叉搜索树转化为双向链表

作者: 放开那个BUG | 来源:发表于2021-08-26 21:20 被阅读0次

    1、前言

    题目描述

    2、思路

    这道题比较简单,直接采用中序遍历的思路遍历二叉搜索树即可。后续连接直接使用一个 pre 节点标定一个节点前面的节点,让他们互相连接。

    3、代码

    class Solution {
        
        private Node pre = new Node();
    
        
        /**
         * 首先使用中序遍历遍历二叉搜索树,然后设置一个 head 作为 pre,当前访问的节点作为 head,
         * 然后让他们相互连接,直到结束
         */
        public Node treeToDoublyList(Node root) {
            if(root == null){
                return root;
            }
            Node head = pre;
    
            dfs(root);
    
            Node first = head.right;
            pre.right = first;
            first.left = pre;
    
            return first;
        }
    
        private void dfs(Node root){
            if(root == null){
                return;
            }
    
            dfs(root.left);
    
            pre.right = root;
            root.left = pre;
            pre = root;
    
            dfs(root.right);
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode 第 426 题:二叉搜索树转化为双向链表

          本文链接:https://www.haomeiwen.com/subject/oorxultx.html