题解-21

二叉搜索树与双向链表

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

思路

1、先中序遍历二叉搜索树,将结果放入数组中
2、再将数组转换为双向链表
private ArrayList<TreeNode> list = new ArrayList<>();
    public TreeNode Convert(TreeNode pRootOfTree) {
        mid(pRootOfTree);
        if(list.size()==1 || list.size()==0){
            return pRootOfTree;
        }
        TreeNode root = null;
        TreeNode pre = null;
        TreeNode after = null;
        for(int i=0;i<list.size()-1;i++){
            if(i==0){
                root=list.get(i);
                root.left = pre;
                pre = root;
                after= list.get(i+1);
                root.right=after; 
            }else{
                after.left=pre;
                pre = after;
                after = list.get(i+1);
                pre.right = after;
            }
        }
        after.left = pre;
        after.right = null;
        return root;
    }
    private void mid(TreeNode pRootOfTree) {
        if(pRootOfTree==null){
            return ;
        }
        if(pRootOfTree.left!=null){
            mid(pRootOfTree.left);
        }
        list.add(pRootOfTree);
        if(pRootOfTree.right!=null){
            mid(pRootOfTree.right);
        }
    }
全部评论

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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