二叉树习题系列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;
    }
}

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

相关文章
|
1月前
《剑指offer》——合并两个排序的链表
《剑指offer》——合并两个排序的链表
|
1月前
|
存储 JavaScript
leetcode82. 删除排序链表中的重复元素 II
leetcode82. 删除排序链表中的重复元素 II
22 0
|
1月前
leetcode83. 删除排序链表中的重复元素
leetcode83. 删除排序链表中的重复元素
10 0
|
2月前
|
算法 前端开发
删除排序链表中的重复元素 II
删除排序链表中的重复元素 II
13 0
|
2月前
|
算法 前端开发
删除排序链表中的重复元素
删除排序链表中的重复元素
17 0
|
3月前
|
Java Go C++
Golang每日一练(leetDay0116) 路径交叉、回文对
Golang每日一练(leetDay0116) 路径交叉、回文对
30 0
Golang每日一练(leetDay0116) 路径交叉、回文对
|
3月前
|
Java Go C++
Golang每日一练(leetDay0094) H 指数 I\II H Index
Golang每日一练(leetDay0094) H 指数 I\II H Index
32 0
Golang每日一练(leetDay0094) H 指数 I\II H Index
|
3月前
|
算法 C++ Python
Java每日一练(20230430) 文本左右对齐、素数和、整数转英文表示
Java每日一练(20230430) 文本左右对齐、素数和、整数转英文表示
28 0
Java每日一练(20230430) 文本左右对齐、素数和、整数转英文表示
|
3月前
|
Python Java Go
Python每日一练(20230430) 移除元素、删除排序链表中的重复元素、搜索旋转排序数组II
Python每日一练(20230430) 移除元素、删除排序链表中的重复元素、搜索旋转排序数组II
46 0
Python每日一练(20230430) 移除元素、删除排序链表中的重复元素、搜索旋转排序数组II
|
3月前
|
算法 C++ Go
Golang每日一练(leetDay0050) 对链表进行插入排序、排序链表、直线上最多的点、逆波兰表达式
Golang每日一练(leetDay0050) 对链表进行插入排序、排序链表、直线上最多的点、逆波兰表达式
30 0
Golang每日一练(leetDay0050) 对链表进行插入排序、排序链表、直线上最多的点、逆波兰表达式