240 发简信
IP属地:北京
  • 120
    感恩演讲,一场关于道德的传销

    最近在微博上看到很多学校举办感恩演讲引发争议的消息,原来这么多年了过去了,很多学校还依然在乐此不疲地举办这样的活动,这让我想到了我自己的亲身经历。 我是高二的时候接触到的这样...

  • 120
    windows 10 64bit下安装Tensorflow GPU版

    自己一个人折腾东西就是要不断爬帖子,在网上参考了各位前辈的攻略后,用了半天加一个晚上终于成功了。网上Ubuntu CUDA的帖子很多,但是很少有Windows的,但是我...

  • 输出二叉树转换为链表的while条件去掉node.left != null 好像才对

    面试算法知识梳理(13) - 二叉树算法第三部分

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法 插入排序 希尔排序 选择排序 冒泡排序 计数排序 基数排序 归并排序 快速排序 双向扫描的快速排序 堆排序 面...

  • 打印和为s的路径不应该使用队列,而是采用栈才对

    面试算法知识梳理(12) - 二叉树算法第二部分

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法 插入排序 希尔排序 选择排序 冒泡排序 计数排序 基数排序 归并排序 快速排序 双向扫描的快速排序 堆排序 面...

  • 重建二叉树的算法存在问题,打印不出相同的结果
    public static Node createTreeAgain(int[] preOrder, int preStart, int preEnd, int[] inOrder, int inStart, int inEnd){
    Node node = new Node();
    int data = preOrder[preStart];
    node.data = data;
    node.lchild = null;
    node.rchild = null;
    if(preStart == preEnd){
    if(inStart == inEnd && preOrder[preStart] == inOrder[inStart]){
    return node;
    }else{
    return null;
    }
    }
    int rootIndex = inStart;
    while(rootIndex <= inEnd && inOrder[rootIndex] != data){
    rootIndex++;
    }
    if(rootIndex == inEnd && inOrder[rootIndex] != data){
    return null;
    }
    int leftPreOrderEnd = preStart + (rootIndex - inStart);
    if(rootIndex != inStart){
    node.lchild = createTreeAgain(preOrder, preStart+1, leftPreOrderEnd, inOrder, inStart, rootIndex-1);
    }
    if(rootIndex != inEnd){
    node.rchild = createTreeAgain(preOrder, leftPreOrderEnd+1, preEnd, inOrder, rootIndex+1, inEnd);
    }
    return node;
    }

  • 重建二叉树的算法存在问题,打印不出相同的结果
    public static Node createTreeAgain(int[] preOrder, int preStart, int preEnd, int[] inOrder, int inStart, int inEnd){
    Node node = new Node();
    int data = preOrder[preStart];
    node.data = data;
    node.lchild = null;
    node.rchild = null;
    if(preStart == preEnd){
    if(inStart == inEnd && preOrder[preStart] == inOrder[inStart]){
    return node;
    }else{
    return null;
    }
    }
    int rootIndex = inStart;
    while(rootIndex <= inEnd && inOrder[rootIndex] != data){
    rootIndex++;
    }
    if(rootIndex == inEnd && inOrder[rootIndex] != data){
    return null;
    }
    int leftPreOrderEnd = preStart + (rootIndex - inStart);
    if(rootIndex != inStart){
    node.lchild = createTreeAgain(preOrder, preStart+1, leftPreOrderEnd, inOrder, inStart, rootIndex-1);
    }
    if(rootIndex != inEnd){
    node.rchild = createTreeAgain(preOrder, leftPreOrderEnd+1, preEnd, inOrder, rootIndex+1, inEnd);
    }
    return node;
    }

    面试算法知识梳理(13) - 二叉树算法第三部分

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法 插入排序 希尔排序 选择排序 冒泡排序 计数排序 基数排序 归并排序 快速排序 双向扫描的快速排序 堆排序 面...