牛客两题
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
public class SolutionTest {
//用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
Stack<Integer> stack1 = new Stack<>();
Stack<Integer> stack2 = new Stack<>();
public void push(Integer item){
stack1.push(item);
}
public Integer pop(){
if (stack2.size()==0) {
while (!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
if (!stack2.isEmpty()) {
return stack2.pop();
}else {
return null;
}
}
public static void main(String[] args) {
SolutionTest solutionTest = new SolutionTest();
solutionTest.push(1);
solutionTest.push(2);
solutionTest.push(3);
System.out.println(solutionTest.pop());
System.out.println(solutionTest.pop());
System.out.println(solutionTest.pop());
System.out.println(solutionTest.pop());
}
}
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。###
public class Solution2Test {
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
if(pre.length==0||in.length==0){
return null;
}
//先序的第一个节点是 首节点 中序的中间节点 左边是左子树 右边是右子树
TreeNode root =new TreeNode(pre[0]);
for(int i=0;i<in.length;i++){
if (in[i]==pre[0]) {
int[] left= Arrays.copyOfRange(in, 0, i);
int[] right= Arrays.copyOfRange(in, i+1, in.length);
root.left = reConstructBinaryTree(Arrays.copyOfRange(pre,1,i+1), left);
root.right = reConstructBinaryTree(Arrays.copyOfRange(pre,i+1,pre.length),right);
break;
}
}
return root;
}
public void printPre(TreeNode root){
if (root==null) {
return;
}
System.out.print(root.val+"-");
printPre(root.left);
printPre(root.right);
}
public void printIn(TreeNode root){
if (root==null) {
return;
}
printIn(root.left);
System.out.print(root.val+"-");
printIn(root.right);
}
public void printAfter(TreeNode root){
if (root==null) {
return;
}
printAfter(root.left);
printAfter(root.right);
System.out.print(root.val+"-");
}
public static void main(String[] args) {
int[] pre={1,2,4,7,3,5,6,8};
int[] in={4,7,2,1,5,3,8,6};
Solution2Test solution2Test = new Solution2Test();
TreeNode treeNode = solution2Test.reConstructBinaryTree(pre, in);
solution2Test.printPre(treeNode);
System.out.println("");
solution2Test.printIn(treeNode);
System.out.println("");
solution2Test.printAfter(treeNode);
}
}