美文网首页
将二叉查找树转换成双向链表

将二叉查找树转换成双向链表

作者: 牛亦非 | 来源:发表于2017-09-12 16:44 被阅读0次

Lintcode上的一道题,昨天下班之前顺手做了一下:将一个二叉查找树按照中序遍历转换成双向链表。


思路:递归中序遍历,用栈存储链表节点构造节点的前后关系。

public class Solution { 
    List<DoublyListNode> treeNodes = new ArrayList<>();

    /**
     * @param root: The root of tree
     * @return: the head of doubly list node
     */
    public DoublyListNode bstToDoublyList(TreeNode root) {
        if (root == null) {
            return null;
        }
        inorderTraversal(root);
        return treeNodes.get(0);
    }

    public void inorderTraversal(TreeNode root) {
        if (root == null) {
            return;
        }
        inorderTraversal(root.left);
        DoublyListNode node = new DoublyListNode(root.val);
        int top = treeNodes.size() - 1;
        if (top >= 0) {
            DoublyListNode topNode = treeNodes.get(top);
            node.prev = topNode;
            topNode.next = node;
        }
        treeNodes.add(node);
        inorderTraversal(root.right);
    }

    public static void main(String[] args) {
        TreeNode root = new TreeNode(4);
        root.left = new TreeNode(2);
        root.right = new TreeNode(5);
        root.left.left = new TreeNode(1);
        root.left.right = new TreeNode(3);
        BstToDoublyList list = new BstToDoublyList();
        DoublyListNode node = list.bstToDoublyList(root);
        while (node != null) {
            System.out.println(node.val);
            node = node.next;
        }
    }
}    

相关文章

  • 27 二叉搜索树与双向链表(二叉树的线索化)

    二叉搜索树与双向链表 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的...

  • 剑指offer.C++.code26-30

    26. 二叉搜索树与双向链表【分治法】 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任...

  • 面试题36. 二叉搜索树与双向链表

    二叉搜索树与双向链表 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新...

  • 排序二叉树转换为排序双向链表

    题目:输入一棵二叉排序树,将该二叉排序树转换成一个排序的带头结点的双向链表。如: 转换成双向链表4<->6<->8...

  • 剑指Offer二

    27.二叉搜索树与双向链表 将二叉搜索树转换成一个排序的双链表,利用二叉搜索树的特性,非空二叉树的左子树上的节点的...

  • 《剑指offer》— JavaScript(26)二叉搜索树与双

    二叉搜索树与双向链表 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结...

  • 36二叉搜索树与双向链表

    面试题36:二叉搜索树与双向链表题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何...

  • 剑指offer(二十六)二叉搜索树与双向链表

    点击进入 牛客网题库:二叉搜索树与双向链表 题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要...

  • JZ-026-二叉搜索树与双向链表

    二叉搜索树与双向链表 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结...

  • 将二叉查找树转换为链表

    在不创建任何新节点的条件下将二叉查找树转换为排序的双向链表。 solution_1 二叉查找树的特点就是左子节点<...

网友评论

      本文标题:将二叉查找树转换成双向链表

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