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

二叉搜索树与双向链表

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);
    }
}
全部评论

相关推荐

霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务