2022/9/20 二叉搜索树与双向链表

剑指 Offer 36. 二叉搜索树与双向链表

题目描述:(这题不咋会,没咋看懂,有空再说,不想墨迹它了现在)
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。

小重点:双向链表、中序遍历

参考链接:K神
知识点1:
二叉搜索树的中序遍历为递增序列 。
双向链表: 在构建相邻节点的引用关系时,设前驱节点 pre 和当前节点 cur ,不仅应构建 pre.right = cur ,也应构建 cur.left = pre

// 打印中序遍历
void dfs(Node root) {
    if(root == null) return;
    dfs(root.left); // 左
    System.out.println(root.val); // 根
    dfs(root.right); // 右
}

知识点2:
将 Arraylist 对象转换为数组

 ArrayList<String> sites = new ArrayList<>();
  // 创建一个新的 String 类型的数组
  // 数组长度和 ArrayList 长度一样
 String[] arr = new String[sites.size()];
 // 将ArrayList对象转换成数组
 sites.toArray(arr);

字符串转化为字符数组:

char[] ss=s.toCharArray();//s为要转化的字符串

字符数组转换为字符串:

char ch={'1','2','3'};
String str=new String(ch);
//or
String str=String.valueOf(ch);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值