题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
思路:
由于要求转换之后的链表是排好序的,我们可以中序遍历树的蒙一个节点。因为中序遍历是按照从小到大的顺序遍历二叉树的每一个结点。
把左右子树都转换成排序的双向链表之后再和根节点链接起来,整棵二叉树就转换成了排序的双向链表。
1 public class Solution { 2 TreeNode head = null; 3 public TreeNode Convert(TreeNode root) { 4 if(root==null) return null; 5 6 Convert(root.right); 7 if(head==null){//递归到最右边了的初始情况 8 head=root; 9 } 10 else{ 11 head.left = root; 12 root.right=head; 13 head = root; 14 } 15 Convert(root.left); 16 return head; 17 } 18 }