题解 | #二叉搜索树与双向链表#

二叉搜索树与双向链表

http://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5

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

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

    }

}
*/
//题目:不创建新的节点,将二叉搜索树转换为链表
//思路:中序遍历二叉搜索树,保存到列表中,然后对列表中节点的左右指针进行修改。
import java.util.*;

public class Solution {
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree == null) return pRootOfTree;
        ArrayList<TreeNode> list = new ArrayList<>();
        Convert(list,pRootOfTree);
        return Convert(list);
    }

    public void Convert(ArrayList<TreeNode> list, TreeNode node){
        if(node.left != null)
            Convert(list,node.left);
        list.add(node);
        if(node.right != null)
            Convert(list,node.right);
    }

    public TreeNode Convert(ArrayList<TreeNode> list){
        //注意此处数组越界:ArrayList.size()返回的是数组中元素个数,从0开始要减一
        for(int i=0;i<list.size()-1;i++){
            list.get(i+1).left = list.get(i);
            list.get(i).right = list.get(i+1);
        }
        return list.get(0);
    }
}
全部评论

相关推荐

自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
求offer的大角牛:不吃香菜
点赞 评论 收藏
分享
06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客965593684号:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务