JZ3 从尾到头打印链表
链接: 题目链接.
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<>();
while(listNode != null){
list.add(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> list2 = new ArrayList<>();
for(int i = list.size()-1; i >=0; --i){
list2.add(list.get(i));
}
return list2;
}
}
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> resList = new ArrayList<>();
if(listNode == null) return resList;
//递归也需要栈的空间消耗
Stack<Integer> stack = new Stack<>();
ListNode p = listNode;
while(p != null){
stack.push(p.val);
p = p.next;
}
while(!stack.isEmpty()){
resList.add(stack.pop());
}
return resList;
}
}
JZ23 二叉搜索树的后序遍历序列
链接: 题目链接.
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence == null || sequence.length == 0){
return false;
}
return isBST(sequence,0,sequence.length-1);
}
public boolean isBST(int[] arr, int start, int end){
if(start >= end){
return true;
}
int key = arr[end];
int i;
for(i = start; i < end; i++){
if(arr[i] > key){
break;
}
}
for(int j = i; j < end; j++){
if(arr[j] < key){
return false;
}
}
return isBST(arr,start,i-1) && isBST(arr,i,end-1);
}
}