最近在微博上看到很多学校举办感恩演讲引发争议的消息,原来这么多年了过去了,很多学校还依然在乐此不疲地举办这样的活动,这让我想到了我自己的亲身经历。 我是高二的时候接触到的这样...
最近在微博上看到很多学校举办感恩演讲引发争议的消息,原来这么多年了过去了,很多学校还依然在乐此不疲地举办这样的活动,这让我想到了我自己的亲身经历。 我是高二的时候接触到的这样...
自己一个人折腾东西就是要不断爬帖子,在网上参考了各位前辈的攻略后,用了半天加一个晚上终于成功了。网上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) - 排序算法 插入排序 希尔排序 选择排序 冒泡排序 计数排序 基数排序 归并排序 快速排序 双向扫描的快速排序 堆排序 面...