输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
解题思路
我们知道,二叉搜索树的中序遍历结果是有序的,因此我们第一个想到的就是使用中序遍历,在这个过程中对结点进行操作
public class Solution {
// 标记上一次入栈值
private TreeNode preNode = null;
private TreeNode head = null;
public TreeNode Convert(TreeNode pRootOfTree) {
if (pRootOfTree == null) {
return null;
}
midShow(pRootOfTree);
return head;
}
public void midShow(TreeNode pRootOfTree) {
if(pRootOfTree.left != null) {
midShow(pRootOfTree.left);
}
if(preNode == null) {
head = pRootOfTree;
preNode = pRootOfTree;
} else {
preNode.right = pRootOfTree;
pRootOfTree.left = preNode;
preNode = pRootOfTree;
}
if(pRootOfTree.right != null) {
midShow(pRootOfTree.right);
}
}
}
相关文章
暂无评论...