美文网首页
二叉搜索树与双向链表

二叉搜索树与双向链表

作者: youzhihua | 来源:发表于2020-01-15 11:34 被阅读0次

    题目描述

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

    思路

    1. 使用递归算法求解。

    2.使用两个TreeNode分别存储前一个结点(pre)以及头结点(head)。

    3.每个递归方法中,将当前node结点与pre结点进行相连。

    node.left = pre
    pre.right = node
    

    4.当递归到最左侧的叶子结点时,将其值赋值给head即可。(二叉搜索树最左边的叶子结点的值是最小的)

    Java代码实现

    public class Solution {
    
        private TreeNode head;
        private TreeNode pre;
    
        public TreeNode Convert(TreeNode pRootOfTree) {
            reverse(pRootOfTree);
            return head;
        }
    
        private void reverse(TreeNode node){
            if(node == null)
                return;
            reverse(node.left);
            node.left = pre;
            if(pre != null)
                pre.right = node;
            pre = node;
            if(head == null)
                head = node;
            reverse(node.right);
        }
        
    }
    

    相关文章

      网友评论

          本文标题:二叉搜索树与双向链表

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