1. 题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
2. 解题思路
(1)使用中序遍历的过程中处理树结点左右指向的问题。
(2)用集合存储中序遍历结果,再连接成双向链表(但实验超时)
3. 实验代码
(1)
public class Solution {
private TreeNode pre = null;
private TreeNode head = null;
public TreeNode Convert(TreeNode pRootOfTree) {
if (pRootOfTree == null)
return null;
SortTree(pRootOfTree);
return head;
}
private void SortTree(TreeNode node) {
if (node == null)
return;
SortTree(node.left);
node.left = pre;
if (pre != null)
pre.right = node;
pre = node;
if (head == null)
head = node;
SortTree(node.right);
}
}
(2)
.。。。