二叉树习题系列1--将二叉搜索树排序树转化为双向链表

简介: 二叉树习题系列1--将二叉搜索树排序树转化为双向链表

这个题先画一个图

思路:使用中序遍历实现这个代码

左树为前驱,右树为后继

d7dd1d949ce64bacbf9b66ff6b0c8d8e.png

public class Solution {
    //使用中序遍历,解决这个问题 
    TreeNode prev=null;
     public void insertTreeNode(TreeNode pCur){
        if(pCur==null){
            return;
            }
            insertTreeNode(pCur.left);
            pCur.left=prev;
            if(prev!=null){
                prev.right=pCur;
            }
            prev=pCur;//这其实相当于打印出了结点
            //System.out.println(pCur.val+"");
            insertTreeNode(pCur.right);
     }
    public TreeNode Convert(TreeNode pRootOfTree) {
       insertTreeNode(pRootOfTree);
       //返回双向链表的头结点
    TreeNode head=pRootOfTree;
    while(head!=null&&head.left!=null){
        head=head.left;
    }
       return head;
    }
}

数据结构还是要多练多刷,加油吧,这个是字节的一道题,共勉

相关文章
|
2月前
|
存储 Java
数据结构第三篇【链表的相关知识点一及在线OJ习题】
数据结构第三篇【链表的相关知识点一及在线OJ习题】
29 7
|
6月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
2月前
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
54 0
|
2月前
|
算法
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
34 0
|
4月前
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
4月前
|
Python
【Leetcode刷题Python】114. 二叉树展开为链表
LeetCode上114号问题"二叉树展开为链表"的Python实现,通过先序遍历二叉树并调整节点的左右指针,将二叉树转换为先序遍历顺序的单链表。
30 3
【Leetcode刷题Python】114. 二叉树展开为链表
|
4月前
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
48 0
|
6月前
|
存储 SQL 算法
LeetCode 83题:删除排序链表中的重复元素【面试】
LeetCode 83题:删除排序链表中的重复元素【面试】
|
6月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
6月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
65 2