题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
题解:用树的后序遍历,将树的左子树和右子树化为双向链表后,再与root节点拼接即可。
题解:用树的后序遍历,将树的左子树和右子树化为双向链表后,再与root节点拼接即可。
public class Solution {
public TreeNode Convert(TreeNode root) {
if(root == null||root.left == null&&root.right == null)
return root;
TreeNode left=Convert(root.left);
TreeNode right=Convert(root.right);
if(left!=null)
{
TreeNode temp=left;
while(temp.right!=null)
temp=temp.right;
root.left=temp;
temp.right=root;
}
if(right!=null)
{
root.right=right;
right.left=root;
}
return left == null?root:left;
}
}