二叉搜索树与双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
时间限制:1秒 空间限制:32768K

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public TreeNode Convert(TreeNode pRootOfTree) {
        
    }
}

解题思路

1.简单粗暴的办法:先将二叉搜索树进行中序遍历并存入ArrayList中;
再对ArrayList中所有结点的left和right进行赋值即可,代码如下:

import java.util.ArrayList;
public class Solution {
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree==null) return null;
        ArrayList list=new ArrayList();
        Sort(pRootOfTree,list);//对二叉搜索树进行中序遍历
        //对二叉搜索树中所有结点的left和right进行赋值
        for(int i=0;i list) {
        if(pRootOfTree.left!=null) Sort(pRootOfTree.left,list);
        list.add(pRootOfTree);
        if(pRootOfTree.right!=null) Sort(pRootOfTree.right,list);
    }
}


你可能感兴趣的:(二叉搜索树与双向链表)