题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
思路:
这道题真没想到该怎么做,思路比较混乱
看完CYC大神的才会做
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public TreeNode pre = null;
public TreeNode head = null;//这两个变量设得秒啊
public TreeNode Convert(TreeNode pRootOfTree) {
//leetcode也有这道题,不过是要会员才能做的
helper(pRootOfTree);
return head;
}
public void helper(TreeNode node){
if(node == null){
return;
}
helper(node.left);
node.left = pre;
if(pre != null){
pre.right = node;
}
pre = node;
if(head == null){
head = node;//把最左边的那个元素赋给head
}
helper(node.right);
}
}