剑指 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);